You are on page 1of 25

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

* Program ID
:
ZHRUSER
*
* PROGRAM TITLE
:
ESS/MSS User ID creation for Employees
*
* Transaction Code
:
ZHRUSER
*
* CREATED BY
:
SGANDRA/SKONDANI
*
* CREATION DATE
:
04/13/2015
*
*----------------------------------------------------------------------*
* DESCRIPTION
:
This report is used to create user ids in IT0105 *
*
with subtype 0001 and also creates user id in the*
*
transaction SU01(SAP user id). This program is
*
*
created to simulate HRUSER funcationality to take*
*
out manual execution of transaction HRUSER.
*
************************************************************************
* Modification history:
*
* ---------------------------------------------------------------------*
* DATE
|User ID
| Transport
| Description
*
* ---------------------------------------------------------------------*
* 04/13/2015
SKONDANI
LEDK908114
[IR136646]-Initial Development*
************************************************************************
REPORT ZHRUSER NO STANDARD PAGE HEADING.
TYPE-POOLS:
SLIS.
* Tables declaration
TABLES:
T100,
PERNR,
PA0002,
PA0105.
DATA:
L_MSTRING(480),
L_SUBRC LIKE SY-SUBRC,
LD_USER TYPE SY-UNAME,
LD_NEW TYPE SY-UNAME,
LD_EMAIL TYPE BAPIADDR3-E_MAIL,
LD_RETURN TYPE SY-SUBRC,
LD_PASS(50) TYPE C.

DATA:
*
DATA:
*
DATA:
*

BDCDATA LIKE BDCDATA


OCCURS 0 WITH HEADER LINE.
messages of call transaction
MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
error session opened (' ' or 'X')
E_GROUP_OPENED.
message texts

INFOTYPES: 0002,0105.
DATA:
DATA:
DATA:

PERNR_TAB LIKE PERNR OCCURS 0 WITH HEADER LINE.


PLVAR LIKE OBJEC-PLVAR.
REALO LIKE OBJEC-REALO.

DATA:
DATA:
DATA:
DATA :
DATA:

DATA:

USER_FOUND LIKE SY-SUBRC.


PUSER TYPE CHAR9.
RETURN
LIKE BAPIRETURN1.
LV_TABIX TYPE SY-TABIX.
BEGIN OF W_1001,
OTYPE TYPE OTYPE,
OBJID TYPE HROBJID,
PLVAR TYPE PLVAR,
RSIGN TYPE RSIGN,
RELAT TYPE RELAT,
ISTAT TYPE ISTAT_D,
ENDDA TYPE ENDDATUM,
END OF W_1001,
WA_1001 LIKE W_1001,
IT_1001 LIKE STANDARD TABLE OF WA_1001.
WA_0002 LIKE P0002,

PA_0002 LIKE P0002 OCCURS 0 WITH HEADER LINE,


PA_0105 LIKE P0105 OCCURS 0 WITH HEADER LINE.
DATA:
BEGIN OF W_CVR,
GSBER TYPE GSBER,
ZDESC TYPE CHAR40,
ZCVR TYPE CHAR10,
END OF W_CVR,
IT_CVR LIKE STANDARD TABLE OF W_CVR,
WA_CVR LIKE W_CVR,
* Begin of Add SKONDANI
W_MSS TYPE C,
W_DATE TYPE CHAR10,
W_DATUM TYPE SY-DATUM VALUE '99991231',
BEGIN OF WA_WERKS,
PERNR TYPE P0001-PERNR,
WERKS TYPE P0001-WERKS,
END OF WA_WERKS,
BEGIN OF WA_T500P,
WERKS TYPE T500P-PERSA,
LAND1 TYPE T500P-LAND1,
END OF WA_T500P,
IT_WERKS LIKE TABLE OF WA_WERKS,
IT_T500P LIKE TABLE OF WA_T500P,
BEGIN OF WA_USR02,
PERNR TYPE PERNR-PERNR,
*
BNAME TYPE USR02-BNAME,
END OF WA_USR02,
IT_USR02 LIKE STANDARD TABLE OF WA_USR02.
DATA:
* SAP user id
W_USERNAME
LIKE BAPIBNAME-BAPIBNAME,
* Work area for logon data
WA_LOGONDATA LIKE BAPILOGOND,
* work area for password
WA_PASSWORD
LIKE BAPIPWD,
* Work area for defaults

WA_DEFAULTS
LIKE BAPIDEFAUL,
* work area for address
WA_ADDRESS
LIKE BAPIADDR3,
* Work area for license data
WA_UCLASS
TYPE BAPIUCLASS,
WA_PARAMETER LIKE BAPIPARAM,
WA_RETURN
LIKE BAPIRET2,
IT_PARAMETER LIKE STANDARD TABLE OF BAPIPARAM,
IT_RETURN
LIKE STANDARD TABLE OF BAPIRET2,
* Structures for Roles.
WA_ACTIVITYGROUPS LIKE BAPIAGR,
IT_ACTIVITYGROUPS LIKE STANDARD TABLE OF BAPIAGR,
BEGIN OF WA_MESSAGES,
PERNR TYPE PA0001-PERNR.
INCLUDE STRUCTURE BAPIRET2.
DATA: ROWCOLOR TYPE CHAR4,
END OF WA_MESSAGES,
IT_MESSAGES LIKE STANDARD TABLE OF WA_MESSAGES,
WA_MSG LIKE WA_MESSAGES.
* End of Add SKONDANI.
*Begin of ADD SKONDANI
TYPES: BEGIN
OF
TY_GRID_LIST,
PERNR
TYPE P0001-PERNR,
ACCOUNT
TYPE CHAR9,
ROLE_NAME TYPE BAPIAGR-AGR_NAME,
IS_MANAGER TYPE C,
CVR
TYPE CHAR10,
UCN
TYPE T500P-LAND1,
SBU
TYPE PERNR-GSBER,
TYPE
TYPE BAPI_MTYPE,
ID
TYPE SYMSGID,
NUMBER
TYPE SYMSGNO,
MESSAGE
TYPE BAPI_MSG,
ROWCOLOR TYPE CHAR4,
END
OF
TY_GRID_LIST.
DATA: IT_GRID_LIST TYPE STANDARD TABLE OF TY_GRID_LIST,
WA_GRID_LIST TYPE TY_GRID_LIST.
* End of ADD SKONDANI
DATA: BEGIN OF RECORD,
* data element: XUBNAME
BNAME_001(012),
* data element: AD_NAMELAS
NAME_LAST_002(040),
* data element: AD_NAMEFIR
NAME_FIRST_003(040),
* data element: SPRAS
LANGU_P_004(002),
* data element: AD_COMM

DEFLT_COMM_005(003),
* data element: AD_NAMELAS
NAME_LAST_006(040),
* data element: AD_NAMEFIR
NAME_FIRST_007(040),
* data element: XUUSTYP
USTYP_008(001),
* data element:
G_PASSWORD1_009(040),
* data element:
G_PASSWORD2_010(040),
* data element: XUCLASS
CLASS_011(012),
* data element: XUDATFM
DATFM_012(001),
* data element: XUTIMEFM
TIMEFM_013(039),
* data element: TZNZONE
TZONE_014(006),
* data element: MEMORYID
PARID_01_015(020),
* data element: AGR_NAME
AGR_NAME_01_016(030),
END OF RECORD.
SELECTION-SCREEN BEGIN OF BLOCK B1
WITH FRAME TITLE TEXT-001. " Add SKONDANI
PARAMETERS: SELDAT LIKE OBJEC-BEGDA MODIF ID DIS DEFAULT SY-DATUM.
SELECTION-SCREEN END OF BLOCK B1.

DATA: NOUS TYPE I VALUE '1',


ALL TYPE I.
INITIALIZATION.
* refresh memory:
* EXPORT pernr_tab TO MEMORY ID 'PERNRSELECTION'.
*
CALL FUNCTION 'RH_GET_ACTIVE_WF_PLVAR'
IMPORTING
ACT_PLVAR
= PLVAR
EXCEPTIONS
NO_ACTIVE_PLVAR = 1
OTHERS
= 2.
IF SY-SUBRC <> 0.
PLVAR = '01'.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
PNPBEGPS = SELDAT.
PNPBEGDA = SELDAT.

LOOP AT SCREEN.
IF SCREEN-GROUP1 NE 'SEL'.
SCREEN-INPUT = 0.
IF SCREEN-GROUP1 NE 'DIS'.
SCREEN-INVISIBLE = 1.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

START-OF-SELECTION.
" Add SKONDANI
***********************************************************************
*Getting all line manager positions into internal table it_1001
***********************************************************************
SELECT OTYPE OBJID PLVAR RSIGN RELAT ISTAT ENDDA INTO TABLE IT_1001
FROM HRP1001 WHERE OTYPE = 'S'
AND
PLVAR = '01' AND
RSIGN = 'A'
AND
RELAT = '012' AND
ISTAT = '1'
AND
ENDDA = '99991231'.
***********************************************************************
*Getting all Parameters from ztable with respect to business area
***********************************************************************
SELECT GSBER ZDESC ZCVR INTO TABLE IT_CVR
FROM ZHR_PARAMETER.
GET PERNR.
IF ALL IS INITIAL.
s into pernr_tab
CLEAR:
USER_FOUND,
NOUS.
LOOP AT P0105 WHERE BEGDA LE SY-DATUM AND
ENDDA GE SY-DATUM AND
SUBTY EQ '0001'.
REALO = P0105-USRID.
CALL FUNCTION 'RH_READ_OBJECT'
EXPORTING
PLVAR
= PLVAR
OTYPE
= 'US'
REALO
= REALO
EXCEPTIONS
NOT_FOUND = 1
OTHERS
= 2.
NOUS = SY-SUBRC.
ENDLOOP.
IF SY-SUBRC GT 0.
USER_FOUND = SY-SUBRC.
ENDIF.

"Employess With out user

IF ( USER_FOUND NE 0 OR NOT NOUS IS INITIAL ).


APPEND PERNR TO PERNR_TAB.
APPEND P0105 TO PA_0105.
APPEND P0002 TO PA_0002.
* Begin of Add SKONDANI
MOVE:
P0002-PERNR TO WA_WERKS-PERNR,
PERNR-WERKS TO WA_WERKS-WERKS.
APPEND WA_WERKS TO IT_WERKS.
CLEAR WA_WERKS.
IF NOUS IS NOT INITIAL.
MOVE:PERNR-PERNR TO WA_USR02-PERNR.
APPEND WA_USR02 TO IT_USR02.
CLEAR WA_USR02.
ENDIF.
* End of Add SKONDANI
ENDIF.
ENDIF.
END-OF-SELECTION.
* Begin of Add SKONDANI
SORT IT_WERKS BY PERNR.
PERFORM GET_COUNTRY_PERSA.
* End of Add SKONDANI
LOOP AT PERNR_TAB.
* Begin of Add SKONDANI
CLEAR:
RETURN,
WA_RETURN,
WA_MESSAGES.
REFRESH:
IT_RETURN.
*
if valid record exists do not create IT0105 record.
CONCATENATE 'P' PERNR_TAB-PERNR INTO PUSER.
CLEAR WA_USR02.
READ TABLE IT_USR02 INTO WA_USR02
WITH KEY PERNR = PERNR_TAB-PERNR.
IF SY-SUBRC NE 0.
* End of Add SKONDANI
***********************************************************************
*Creating record in the table P0105 - subtype 0001.
***********************************************************************
CONCATENATE 'P' PERNR_TAB-PERNR INTO PUSER.
CLEAR P0105.
P0105-PERNR = PERNR_TAB-PERNR.
P0105-SUBTY = '0001'.
P0105-ENDDA = '99991231'.
P0105-BEGDA = SY-DATUM.
P0105-AEDTM = SY-DATUM.
P0105-UNAME = SY-UNAME.

P0105-USRTY = '0001'.
P0105-USRID = PUSER.
CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
EXPORTING
NUMBER = PERNR_TAB-PERNR.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY
= '0105'
NUMBER
= PERNR_TAB-PERNR
VALIDITYEND
= P0105-ENDDA
VALIDITYBEGIN = P0105-BEGDA
RECORD
= P0105
OPERATION
= 'INS'
IMPORTING
RETURN
= RETURN.
IF RETURN IS NOT INITIAL.
* Begin of Add SKONDANI
MOVE: PERNR_TAB-PERNR TO WA_MESSAGES-PERNR.
MOVE-CORRESPONDING RETURN TO WA_MESSAGES.
APPEND WA_MESSAGES TO IT_MESSAGES.
CLEAR WA_MESSAGES.
* End of Add SKONDANI
*
WRITE RETURN.
" Delete SKONDANI
ELSE.
MOVE: PERNR_TAB-PERNR TO WA_MESSAGES-PERNR.
MOVE:
'S' TO WA_MESSAGES-TYPE,
'00' TO WA_MESSAGES-ID,
'001' TO WA_MESSAGES-NUMBER,
'IT0105 record created sucessfully' TO WA_MESSAGES-MESSAGE.
APPEND WA_MESSAGES TO IT_MESSAGES.
CLEAR WA_MESSAGES.
ENDIF.
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
NUMBER = PERNR_TAB-PERNR.
ENDIF.
***********************************************************************
*Getting lastname and firstname for a pernr
***********************************************************************
CLEAR WA_0002.
READ TABLE PA_0002 WITH KEY PERNR = PERNR_TAB-PERNR INTO WA_0002.
***********************************************************************
*Getting CVR Parameter
***********************************************************************
CLEAR WA_CVR.
READ TABLE IT_CVR WITH KEY GSBER = PERNR_TAB-GSBER INTO WA_CVR.

* Begin of Add SKONDANI


* Read UCN parameter of the employee
CLEAR:
W_MSS,
WA_WERKS,
WA_T500P.
READ TABLE IT_WERKS INTO WA_WERKS
WITH KEY PERNR = PERNR_TAB-PERNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
READ TABLE IT_T500P INTO WA_T500P
WITH KEY WERKS = WA_WERKS-WERKS BINARY SEARCH.
ENDIF.
* End of Add SKONDANI
***********************************************************************
*Checking for MSSUSER
***********************************************************************
CLEAR WA_1001.
READ TABLE IT_1001 WITH KEY OTYPE = 'S' OBJID = PERNR_TAB-PLANS INTO W
A_1001.
IF SY-SUBRC = '0'.
***********************************************************************
*Creating record in SU01 for MSSUSER
***********************************************************************
*
Set the flag if the user is MSS user type
W_MSS = 'X'.
*

Set common data.


PERFORM SET_COMMON_DATA.
CLEAR L_SUBRC.
Create SAP user id
W_USERNAME = PUSER.
PERFORM CREATE_SAP_USER_ID USING

L_SUBRC.

IF L_SUBRC EQ 0.

IF IT_RETURN[] IS NOT INITIAL.


Collect messages from user id creation
PERFORM COLLECT_MESSAGES.
ENDIF.

REFRESH:
IT_RETURN,
IT_ACTIVITYGROUPS.
CLEAR:
L_SUBRC,
WA_ACTIVITYGROUPS.

*
*
*
*

*
*

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

Assign this role in system.


PERFORM ASSIGN_ROLES USING W_MSS
L_SUBRC.
IF IT_RETURN[] IS NOT INITIAL.
Collect messages from roles assignment
PERFORM COLLECT_MESSAGES.
ENDIF.
ELSE.
IF IT_RETURN[] IS NOT INITIAL.
Collect messages from user id creation
PERFORM COLLECT_MESSAGES.
ENDIF.
ENDIF.
Begin of Delete SKONDANI
L_SUBRC = SY-SUBRC.
LD_RETURN = L_SUBRC.
End of Delete SKONDANI
IF L_SUBRC IS INITIAL.
WRITE: / 'Succesfully Created MSSUSER', PUSER. " Delete SKONDANI
Begin of Add SKONANI
IF SYST-SYSID+2(1) EQ 'P' AND
PUSER IS NOT INITIAL .
CLEAR:
BDCDATA,
MESSTAB.
PERFORM ASSIGN_STRUCTURAL_AUTH USING PUSER
W_MSS.
ENDIF.
End of Add SKONDANI
ELSE.
WRITE: / 'Failed to Create MSSUSER', PUSER.
LOOP AT MESSTAB.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
AND
ARBGB = MESSTAB-MSGID
AND
MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.

*
*
*
*
*

WRITE: / L_MSTRING. "MESSTAB-MSGTYP,


ELSE.
WRITE: / MESSTAB.
ENDIF.
ENDLOOP.
ENDIF.
*
CLEAR MESSTAB.
" Delete SKONDANI
ELSE.
***********************************************************************
*Creating record in SU01 for ESSUSER
***********************************************************************
*

Set common data.


PERFORM SET_COMMON_DATA.
CLEAR L_SUBRC.
Create SAP user id
W_USERNAME = PUSER.
PERFORM CREATE_SAP_USER_ID USING

L_SUBRC.

IF L_SUBRC EQ 0.

IF IT_RETURN[] IS NOT INITIAL.


Collect messages from user id creation
PERFORM COLLECT_MESSAGES.
ENDIF.

REFRESH:
IT_RETURN,
IT_ACTIVITYGROUPS.
CLEAR:
L_SUBRC,
WA_ACTIVITYGROUPS.
*

Assign this role in system.


PERFORM ASSIGN_ROLES USING W_MSS
L_SUBRC.
IF IT_RETURN[] IS NOT INITIAL.
IF IT_RETURN[] IS NOT INITIAL.
Collect messages from roles assignment
PERFORM COLLECT_MESSAGES.
ENDIF.
ENDIF.
ELSE.
IF IT_RETURN[] IS NOT INITIAL.
Collect messages from user id creation
PERFORM COLLECT_MESSAGES.
ENDIF.
ENDIF.

* Begin of Delete SKONDANI

*
L_SUBRC = SY-SUBRC.
*
LD_RETURN = L_SUBRC.
* End of Delete SKONDANI
IF L_SUBRC IS INITIAL.
*
WRITE: / 'Succesfully Created ESSUSER', PUSER. " Delete SKODANI
* Begin of Add SKONANI
IF SYST-SYSID+2(1) EQ 'P' AND
PUSER IS NOT INITIAL .
CLEAR:
BDCDATA,
MESSTAB.
PERFORM ASSIGN_STRUCTURAL_AUTH USING PUSER
W_MSS.
ENDIF.
* End of Add SKONDANI
ELSE.
* Begin of Delete SKONDANI
*
WRITE: / 'Failed to Create ESSUSER', PUSER.
*
LOOP AT MESSTAB.
*
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
*
AND
ARBGB = MESSTAB-MSGID
*
AND
MSGNR = MESSTAB-MSGNR.
*
IF SY-SUBRC = 0.
*
L_MSTRING = T100-TEXT.
*
IF L_MSTRING CS '&1'.
*
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
*
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
*
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
*
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
*
ELSE.
*
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
*
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
*
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
*
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
*
ENDIF.
*
CONDENSE L_MSTRING.
*
WRITE: / L_MSTRING. "MESSTAB-MSGTYP,
*
ELSE.
*
WRITE: / MESSTAB.
*
ENDIF.
*
ENDLOOP.
* End of Delete SKONDANI
ENDIF.
*
CLEAR MESSTAB.
ENDIF.
*
Begin of add SKODANI
WA_GRID_LIST-PERNR = PERNR_TAB-PERNR.
WA_GRID_LIST-SBU = PERNR_TAB-GSBER.
IF W_MSS = 'X'.
WA_GRID_LIST-IS_MANAGER = 'Y'.
ELSE.
WA_GRID_LIST-IS_MANAGER = 'N'.

ENDIF.
WA_GRID_LIST-UCN = WA_T500P-LAND1.
WA_GRID_LIST-CVR = WA_CVR-ZCVR.
WA_GRID_LIST-ACCOUNT = PUSER.
CLEAR WA_MSG.
*READ TABLE IT_MESSAGES INTO wa_msg WITH key PERNR = PERNR_TAB-PERNR.
IF IT_ACTIVITYGROUPS IS NOT INITIAL.
LOOP AT IT_ACTIVITYGROUPS INTO WA_ACTIVITYGROUPS.
WA_GRID_LIST-ROLE_NAME = WA_ACTIVITYGROUPS-AGR_NAME.
LV_TABIX = SY-TABIX.
READ TABLE IT_MESSAGES INTO WA_MSG INDEX SY-TABIX.
WA_GRID_LIST-TYPE = WA_MSG-TYPE.
WA_GRID_LIST-ID = WA_MSG-ID.
WA_GRID_LIST-NUMBER = WA_MSG-NUMBER.
WA_GRID_LIST-MESSAGE = WA_MSG-MESSAGE.
IF WA_GRID_LIST-TYPE EQ 'E' OR
WA_GRID_LIST-TYPE EQ 'A'.
WA_GRID_LIST-ROWCOLOR = 'C610'.
ELSE.
WA_GRID_LIST-ROWCOLOR = 'C500'.
ENDIF.
APPEND WA_GRID_LIST TO IT_GRID_LIST.
ENDLOOP.
ELSE.
APPEND WA_GRID_LIST TO IT_GRID_LIST.
ENDIF.
CLEAR WA_GRID_LIST.
*

End of add SKODANI


ENDLOOP.

* Begin of Add SKONDANI


* Build ALV list.
IF IT_MESSAGES[] IS NOT INITIAL.
IF SY-BATCH = 'X'.
PERFORM DISPLAY_ALV_LIST.
ELSE.
PERFORM DISPLAY_GRID_LIST.
ENDIF.
ENDIF.
* End of Add SKONDANI
*----------------------------------------------------------------------*
*
Start new screen
*
*----------------------------------------------------------------------*

FORM BDC_DYNPRO USING PROGRAM DYNPRO.


CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO
= DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
"BDC_DYNPRO
*----------------------------------------------------------------------*
*
Insert field
*
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL IS NOT INITIAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
"BDC_FIELD
* Begin of Add SKONDANI
*&---------------------------------------------------------------------*
*&
Form GET_COUNTRY_PERSA
*
*&---------------------------------------------------------------------*
*
This subroutine is used to get country of the personal area
*
*----------------------------------------------------------------------*
*
No parameters passed.
*
*----------------------------------------------------------------------*
FORM GET_COUNTRY_PERSA .
DATA:
LT_WERKS LIKE TABLE OF WA_WERKS.
LT_WERKS[] = IT_WERKS[].
* Remove duplicate personnel area data from local internal table.
SORT LT_WERKS BY WERKS.
DELETE ADJACENT DUPLICATES FROM LT_WERKS COMPARING WERKS.
IF LT_WERKS[] IS NOT INITIAL.
* Get country of the personnel area
SELECT PERSA
LAND1
FROM T500P
INTO TABLE IT_T500P
FOR ALL ENTRIES IN LT_WERKS
WHERE PERSA EQ LT_WERKS-WERKS.
IF SY-SUBRC EQ 0.
SORT IT_T500P BY WERKS.
ENDIF.
ENDIF.
ENDFORM.

" GET_COUNTRY_PERSA

*&---------------------------------------------------------------------*
*&
Form ASSIGN_STRUCTURAL_AUTH
*
*&---------------------------------------------------------------------*
*
This subroutine is used to assign structural authorizations to *
*
ESS/MSS p user id created.
*
*----------------------------------------------------------------------*
*
-->P_USER P Account
*
*
-->P_MSS
MSS user id flag
*
*----------------------------------------------------------------------*
FORM ASSIGN_STRUCTURAL_AUTH USING
P_USER
P_MSS.
PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
PERFORM BDC_FIELD

PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_FIELD
IF P_MSS IS INITIAL.
PERFORM BDC_FIELD
ELSE.
PERFORM BDC_FIELD

USING 'SAPL0H00' '0017'.


USING 'BDC_OKCODE'
'=NEWL'.
USING 'BDC_CURSOR'
'T77UA-BEGDA(01)'.
USING 'SAPL0H00' '0017'.
USING 'BDC_OKCODE'
'=SAVE'.
USING 'BDC_CURSOR'
'T77UA-ENDDA(01)'.
USING 'T77UA-UNAME(01)'
P_USER.
USING 'T77UA-PROFL(01)'
'LIOX_ESS'.
USING 'T77UA-PROFL(01)'
'LIOX_MSS'.

ENDIF.
CLEAR W_DATE.
WRITE SY-DATUM TO W_DATE.
PERFORM BDC_FIELD
USING 'T77UA-BEGDA(01)'
W_DATE.
CLEAR W_DATE.
WRITE W_DATUM TO W_DATE.
PERFORM BDC_FIELD
USING 'T77UA-ENDDA(01)'
W_DATE.
PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
PERFORM BDC_FIELD

PERFORM BDC_DYNPRO
PERFORM BDC_FIELD

USING 'SAPL0H00' '0017'.


USING 'BDC_OKCODE'
'/EABR'.
USING 'BDC_CURSOR'
'T77UA-UNAME(02)'.

USING 'SAPL0H00' '0017'.


USING 'BDC_OKCODE'
'/EABR'.

PERFORM BDC_FIELD

USING 'BDC_CURSOR'
'T77UA-ENDDA(01)'.

CALL TRANSACTION 'OOSB' USING BDCDATA MODE 'N' UPDATE 'S'


MESSAGES INTO MESSTAB.
* Check if it resulted in any ERROR.
CLEAR MESSTAB.
READ TABLE MESSTAB WITH KEY MSGTYP = 'E'.
IF SY-SUBRC NE 0.
READ TABLE MESSTAB WITH KEY MSGTYP = 'A'.
IF SY-SUBRC EQ 0.
CONCATENATE 'Failed to assign structural authorization to user id:'
P_USER INTO WA_MESSAGES-MESSAGE.
MOVE:
PERNR_TAB-PERNR TO WA_MESSAGES-PERNR,
*
L_MSTRING TO WA_MESSAGES-MESSAGE,
'00' TO WA_MESSAGES-ID,
'001' TO WA_MESSAGES-NUMBER,
'E' TO WA_MESSAGES-TYPE.
APPEND WA_MESSAGES TO IT_MESSAGES.
CLEAR WA_MESSAGES.
*
SER.

WRITE:/ 'Failed to assign structural authorization to user id:', P_U


ELSE.
CONCATENATE 'Successfully assigned structural authorization to user i

d:'

P_USER INTO WA_MESSAGES-MESSAGE.


MOVE:
PERNR_TAB-PERNR TO WA_MESSAGES-PERNR,
L_MSTRING TO WA_MESSAGES-MESSAGE,
'00' TO WA_MESSAGES-ID,
'001' TO WA_MESSAGES-NUMBER,
'S' TO WA_MESSAGES-TYPE.
APPEND WA_MESSAGES TO IT_MESSAGES.
CLEAR WA_MESSAGES.
WRITE:/ 'Successfully assigned structural authorization to user id:'
P_USER.
ENDIF.
ELSE.
CONCATENATE 'Failed to assign structural authorization to user id:'
P_USER INTO WA_MESSAGES-MESSAGE.
MOVE:
PERNR_TAB-PERNR TO WA_MESSAGES-PERNR,
L_MSTRING TO WA_MESSAGES-MESSAGE,
'00' TO WA_MESSAGES-ID,
'001' TO WA_MESSAGES-NUMBER,
'E' TO WA_MESSAGES-TYPE.
APPEND WA_MESSAGES TO IT_MESSAGES.
CLEAR WA_MESSAGES.
WRITE:/ 'Failed to assign structural authorization to user id:', P_USE

*
,

*
R.

ENDIF.
PERFORM WRITE_MESSAGES.
ENDFORM.

" ASSIGN_STRUCTURAL_AUTH

*&---------------------------------------------------------------------*
*&
Form WRITE_MESSAGES
*
*&---------------------------------------------------------------------*
*
This subroutine is to write the messages to list.
*
*----------------------------------------------------------------------*
*
No interface parameters are passed.
*
*----------------------------------------------------------------------*
FORM WRITE_MESSAGES .
DATA:
L_MSTRING(480).
LOOP AT MESSTAB.
CLEAR:
L_MSTRING.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
AND
ARBGB = MESSTAB-MSGID
AND
MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
*
WRITE: / L_MSTRING. "MESSTAB-MSGTYP,
MOVE:
PERNR_TAB-PERNR TO WA_MESSAGES-PERNR,
L_MSTRING TO WA_MESSAGES-MESSAGE,
MESSTAB-MSGID TO WA_MESSAGES-ID,
MESSTAB-MSGNR TO WA_MESSAGES-NUMBER,
MESSTAB-MSGTYP TO WA_MESSAGES-TYPE.
APPEND WA_MESSAGES TO IT_MESSAGES.
CLEAR WA_MESSAGES.
ELSE.
*
WRITE: / MESSTAB.
ENDIF.
ENDLOOP.
ENDFORM.
" WRITE_MESSAGES
*&---------------------------------------------------------------------*

*&
Form SET_COMMON_DATA
*
*&---------------------------------------------------------------------*
*
This is common data for ESS/MSS user.
*
*----------------------------------------------------------------------*
*
No interface changes parameters are passed.
*
*----------------------------------------------------------------------*
FORM SET_COMMON_DATA .
* Set logon Data tab data
WA_LOGONDATA-GLTGV = SY-DATUM.
WA_LOGONDATA-GLTGB = W_DATUM.
WA_LOGONDATA-USTYP = 'A'.
WA_LOGONDATA-CLASS = 'ESSUSER'.
WA_LOGONDATA-TZONE = 'EST'.
* Set the password
WA_PASSWORD-BAPIPWD = 'Lion1234'.
* Set the defaults
WA_DEFAULTS-DCPFM
WA_DEFAULTS-DATFM
WA_DEFAULTS-TIMEFM

= 'X'.
= '2'.
= '0'.

* Set the address data


WA_ADDRESS-FIRSTNAME
WA_ADDRESS-LASTNAME

= WA_0002-VORNA.
= WA_0002-NACHN.

* Set licence data


WA_UCLASS-LIC_TYPE = 'CE'.
* Set parameter CVR
IF WA_CVR-ZCVR IS NOT
WA_PARAMETER-PARID
WA_PARAMETER-PARVA
APPEND WA_PARAMETER
CLEAR WA_PARAMETER.
ENDIF.

INITIAL.
= 'CVR'.
= WA_CVR-ZCVR.
TO IT_PARAMETER.

* Set UCN parameter


IF WA_T500P-LAND1 IS NOT INITIAL.
WA_PARAMETER-PARID = 'UCN'.
WA_PARAMETER-PARVA = WA_T500P-LAND1.
APPEND WA_PARAMETER TO IT_PARAMETER.
CLEAR WA_PARAMETER.
ENDIF.
ENDFORM.
" SET_COMMON_DATA
*&---------------------------------------------------------------------*
*&
Form CREATE_SAP_USER_ID
*
*&---------------------------------------------------------------------*
*
This subroutine is used to create the SAP user ID.
*
*----------------------------------------------------------------------*
*
<-->P_SUBRC Return value
*
*----------------------------------------------------------------------*
FORM CREATE_SAP_USER_ID USING
P_SUBRC.

CALL FUNCTION 'BAPI_USER_CREATE1'


EXPORTING
USERNAME = W_USERNAME
LOGONDATA = WA_LOGONDATA
PASSWORD = WA_PASSWORD
DEFAULTS = WA_DEFAULTS
ADDRESS
= WA_ADDRESS
UCLASS
= WA_UCLASS
TABLES
PARAMETER = IT_PARAMETER
RETURN
= IT_RETURN.
.
LOOP AT IT_RETURN INTO WA_RETURN WHERE TYPE EQ 'E' OR
TYPE EQ 'A'.
P_SUBRC = 4.
EXIT.
ENDLOOP.
ENDFORM.
" CREATE_SAP_USER_ID
*&---------------------------------------------------------------------*
*&
Form ASSIGN_ROLES
*
*&---------------------------------------------------------------------*
*
This subroutine is used to assign roles to newly created SAP
*
*----------------------------------------------------------------------*
*
-->P_MSS
Flag for MSS User
*
*
<--P_SUBRC Return value
*
*----------------------------------------------------------------------*
FORM ASSIGN_ROLES USING
P_MSS
P_SUBRC.
* Roles for MSS user
IF P_MSS IS NOT INITIAL.
*
Manager Role
WA_ACTIVITYGROUPS-AGR_NAME = 'ZBC01-0000-MANAGER_CONNECT_C'.
APPEND WA_ACTIVITYGROUPS TO IT_ACTIVITYGROUPS.
CLEAR WA_ACTIVITYGROUPS.
* Begin of ADD SKONDANI
WA_ACTIVITYGROUPS-AGR_NAME = 'ZSAP_FI_TV_TRAVEL_MANAGER'.
APPEND WA_ACTIVITYGROUPS TO IT_ACTIVITYGROUPS.
CLEAR WA_ACTIVITYGROUPS.
*End of ADD SKONDANI
*
Employee role
WA_ACTIVITYGROUPS-AGR_NAME = 'ZBC00-0000-EMPLOYEE_CONNECT_X'.
APPEND WA_ACTIVITYGROUPS TO IT_ACTIVITYGROUPS.
CLEAR WA_ACTIVITYGROUPS.
*

Common Role
WA_ACTIVITYGROUPS-AGR_NAME = 'ZZR:COMMON_ALL_USERS'.
APPEND WA_ACTIVITYGROUPS TO IT_ACTIVITYGROUPS.
CLEAR WA_ACTIVITYGROUPS.

* Begin of ADD SKONDANI


WA_ACTIVITYGROUPS-AGR_NAME = 'ZSAP_FI_TV_TRAVELER'.
APPEND WA_ACTIVITYGROUPS TO IT_ACTIVITYGROUPS.
CLEAR WA_ACTIVITYGROUPS.
*End of ADD SKONDANI
ELSE.
* Roles for ESS user
*
Assign composite role
WA_ACTIVITYGROUPS-AGR_NAME = 'YHD:ESS_USER'.
APPEND WA_ACTIVITYGROUPS TO IT_ACTIVITYGROUPS.
CLEAR WA_ACTIVITYGROUPS.
* Begin of ADD SKONDANI
WA_ACTIVITYGROUPS-AGR_NAME = 'ZSAP_FI_TV_TRAVELER'.
APPEND WA_ACTIVITYGROUPS TO IT_ACTIVITYGROUPS.
CLEAR WA_ACTIVITYGROUPS.
*End of ADD SKONDANI
ENDIF.

CALL FUNCTION 'SUSR_BAPI_USER_ACTGROUPS_ASSIG'


EXPORTING
USERNAME
= W_USERNAME
TABLES
ACTIVITYGROUPS = IT_ACTIVITYGROUPS
RETURN
= IT_RETURN.
LOOP AT IT_RETURN INTO WA_RETURN WHERE TYPE EQ 'E' OR
TYPE EQ 'A'.
P_SUBRC = 4.
EXIT.
ENDLOOP.

ENDFORM.

" ASSIGN_ROLES

*&---------------------------------------------------------------------*
*&
Form DISPLAY_ALV_LIST
*
*&---------------------------------------------------------------------*
*
This subroutine is used to display the ALV list with status of *
*----------------------------------------------------------------------*
*
No interface parameters are passed.
*
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_LIST .
DATA: FIELD_TAB TYPE SLIS_T_FIELDCAT_ALV,
LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENTS TYPE SLIS_T_EVENT,
IT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT,
WA_IT_EXCLUDING TYPE SLIS_EXTAB,
IT_EXCLUDING TYPE SLIS_T_EXTAB,
IS_VARIANT TYPE DISVARIANT.
DATA: WA_FIELD_TAB TYPE SLIS_FIELDCAT_ALV.

Set lay out of the color row


LAYOUT-INFO_FIELDNAME = 'ROWCOLOR'.

* Create field catalogue.


WA_FIELD_TAB-FIELDNAME = 'PERNR'.
WA_FIELD_TAB-REF_TABNAME = 'PA0001'.
WA_FIELD_TAB-SELTEXT_S = 'Employee ID'.
WA_FIELD_TAB-OUTPUTLEN = '10'.
WA_FIELD_TAB-KEY = 'X'.
WA_FIELD_TAB-KEY_SEL = 'X'.
WA_FIELD_TAB-COL_POS = 1.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'TYPE'.
WA_FIELD_TAB-REF_TABNAME = 'BAPIRET2'.
WA_FIELD_TAB-SELTEXT_S = 'Msg Type'.
WA_FIELD_TAB-OUTPUTLEN = '8'.
CLEAR WA_FIELD_TAB-KEY.
WA_FIELD_TAB-COL_POS = 2..
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'ID'.
WA_FIELD_TAB-SELTEXT_S = 'Msg ID'.
WA_FIELD_TAB-REF_TABNAME = 'BAPIRET2'.
WA_FIELD_TAB-OUTPUTLEN = '6'.
CLEAR WA_FIELD_TAB-KEY.
WA_FIELD_TAB-COL_POS = 3..
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'NUMBER'.
WA_FIELD_TAB-SELTEXT_S = 'Msg No.'.
WA_FIELD_TAB-REF_TABNAME = 'BAPIRET2'.
WA_FIELD_TAB-OUTPUTLEN = '6'.
CLEAR WA_FIELD_TAB-KEY.
WA_FIELD_TAB-COL_POS = 4.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'MESSAGE'.
WA_FIELD_TAB-REF_TABNAME = 'BAPIRET2'.
WA_FIELD_TAB-SELTEXT_S = 'Message'.
WA_FIELD_TAB-OUTPUTLEN = '80'.
CLEAR WA_FIELD_TAB-KEY.
WA_FIELD_TAB-COL_POS = 5.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'ROWCOLOR'.
WA_FIELD_TAB-NO_OUT = 'X'.
* wa_field_tab-ref_tabname = 'BAPIRET2'.

CLEAR WA_FIELD_TAB-KEY.
WA_FIELD_TAB-COL_POS = 5.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CONSTANTS:
FC_UABC(4) VALUE '&ABC'.
"ABC analysis, excluded!
* fcodes
WA_IT_EXCLUDING-FCODE = FC_UABC.
APPEND WA_IT_EXCLUDING TO IT_EXCLUDING.
CONSTANTS: CALLBACK_PROGRAM LIKE SY-REPID VALUE 'ZHRUSER'.
LOOP AT IT_MESSAGES INTO WA_MESSAGES.
IF WA_MESSAGES-TYPE EQ 'E' OR
WA_MESSAGES-TYPE EQ 'A'.
WA_MESSAGES-ROWCOLOR = 'C610'.
ELSE.
WA_MESSAGES-ROWCOLOR = 'C500'.
ENDIF.
MODIFY IT_MESSAGES FROM WA_MESSAGES TRANSPORTING ROWCOLOR.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
*
i_buffer_active
= 'X'
I_CALLBACK_PROGRAM
= CALLBACK_PROGRAM
*
i_structure_name
= ' '
IS_LAYOUT
= LAYOUT
IT_FIELDCAT
= FIELD_TAB
IT_EXCLUDING
= IT_EXCLUDING
*
IT_SPECIAL_GROUPS
=
*
IT_SORT
=
*
IT_FILTER
=
*
IS_SEL_HIDE
=
I_DEFAULT
= 'X'
I_SAVE
= 'A'
IS_VARIANT
= IS_VARIANT
*
it_events
= it_events
*
it_event_exit
= it_event_exit
*
IS_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
= IT_MESSAGES
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS
= 2 .
ENDFORM.
" DISPLAY_ALV_LIST

*&---------------------------------------------------------------------*
*&
Form COLLECT_MESSAGES
*
*&---------------------------------------------------------------------*
*
This subroutine is used to collect the messages from user id & *
*----------------------------------------------------------------------*
*
No interface parameters are passed.
*
*----------------------------------------------------------------------*
FORM COLLECT_MESSAGES .
*

Handle Messages if SAP user id roles are not assigned.


MOVE PERNR_TAB-PERNR TO WA_MESSAGES-PERNR.
LOOP AT IT_RETURN INTO WA_RETURN.
MOVE-CORRESPONDING WA_RETURN TO WA_MESSAGES.
APPEND WA_MESSAGES TO IT_MESSAGES.
ENDLOOP.
REFRESH:
IT_RETURN.
CLEAR:
WA_RETURN,
WA_MESSAGES.
ENDFORM.
" COLLECT_MESSAGES
* End of Add SKONDANI
* Begin of Add SKONDANI
*&---------------------------------------------------------------------*
*&
Form DISPLAY_GRID_LIST
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM DISPLAY_GRID_LIST .
DATA: FIELD_TAB TYPE SLIS_T_FIELDCAT_ALV,
LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_FIELD_TAB TYPE SLIS_FIELDCAT_ALV.
LAYOUT-INFO_FIELDNAME = 'ROWCOLOR'.
WA_FIELD_TAB-FIELDNAME = 'PERNR'.
WA_FIELD_TAB-SELTEXT_L = 'Employee ID'.
WA_FIELD_TAB-SELTEXT_S = 'Employee ID'.
WA_FIELD_TAB-COL_POS = 1.
WA_FIELD_TAB-OUTPUTLEN = '11'.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'ACCOUNT'.
WA_FIELD_TAB-SELTEXT_S = 'Account'.
WA_FIELD_TAB-OUTPUTLEN = '10'.
WA_FIELD_TAB-COL_POS
= 2.
APPEND WA_FIELD_TAB TO FIELD_TAB.

CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'ROLE_NAME'.
WA_FIELD_TAB-SELTEXT_M = 'Role Assigned'.
WA_FIELD_TAB-SELTEXT_L = 'Role Assigned'.
WA_FIELD_TAB-OUTPUTLEN = '30'.
WA_FIELD_TAB-COL_POS
= 3.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'IS_MANAGER'.
WA_FIELD_TAB-SELTEXT_S = 'Manager'.
WA_FIELD_TAB-SELTEXT_L = 'Manager'.
WA_FIELD_TAB-SELTEXT_M = 'Manager'.
WA_FIELD_TAB-OUTPUTLEN = '7'.
WA_FIELD_TAB-COL_POS
= 4.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'SBU'.
WA_FIELD_TAB-SELTEXT_S = 'SBU'.
WA_FIELD_TAB-COL_POS
= 5.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'CVR'.
WA_FIELD_TAB-SELTEXT_S = 'CVR'.
WA_FIELD_TAB-OUTPUTLEN = '10'.
WA_FIELD_TAB-COL_POS
= 6.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'UCN'.
WA_FIELD_TAB-SELTEXT_S = 'UCN'.
WA_FIELD_TAB-COL_POS
= 7.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'TYPE'.
WA_FIELD_TAB-SELTEXT_L = 'Message Type'.
WA_FIELD_TAB-COL_POS
= 8.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'ID'.
WA_FIELD_TAB-SELTEXT_M = 'Message Class'.
WA_FIELD_TAB-COL_POS
= 9.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'NUMBER'.
WA_FIELD_TAB-SELTEXT_M = 'Message Number'.
WA_FIELD_TAB-COL_POS
= 10.

APPEND WA_FIELD_TAB TO FIELD_TAB.


CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'MESSAGE'.
WA_FIELD_TAB-SELTEXT_M = 'Message Text'.
WA_FIELD_TAB-COL_POS
= 18.
APPEND WA_FIELD_TAB TO FIELD_TAB.
CLEAR WA_FIELD_TAB.
WA_FIELD_TAB-FIELDNAME = 'ROWCOLOR'.
WA_FIELD_TAB-NO_OUT = 'X'.
CLEAR WA_FIELD_TAB-KEY.
WA_FIELD_TAB-COL_POS = 11.
APPEND WA_FIELD_TAB TO FIELD_TAB.
SORT IT_GRID_LIST BY PERNR ACCOUNT.

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

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

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_INTERFACE_CHECK
= ' '
I_BYPASSING_BUFFER
= ' '
I_BUFFER_ACTIVE
= ' '
I_CALLBACK_PROGRAM
= ' '
I_CALLBACK_PF_STATUS_SET
= ' '
I_CALLBACK_USER_COMMAND
= ' '
I_CALLBACK_TOP_OF_PAGE
= ' '
I_CALLBACK_HTML_TOP_OF_PAGE
= ' '
I_CALLBACK_HTML_END_OF_LIST
= ' '
I_STRUCTURE_NAME
=
I_BACKGROUND_ID
= ' '
I_GRID_TITLE
=
I_GRID_SETTINGS
=
IS_LAYOUT
= LAYOUT
IT_FIELDCAT
= FIELD_TAB
IT_EXCLUDING
=
IT_SPECIAL_GROUPS
=
IT_SORT
=
IT_FILTER
=
IS_SEL_HIDE
=
I_DEFAULT
= 'X'
I_SAVE
= ' '
IS_VARIANT
=
IT_EVENTS
=
IT_EVENT_EXIT
=
IS_PRINT
=
IS_REPREP_ID
=
I_SCREEN_START_COLUMN
= 0
I_SCREEN_START_LINE
= 0
I_SCREEN_END_COLUMN
= 0
I_SCREEN_END_LINE
= 0
I_HTML_HEIGHT_TOP
= 0

*
I_HTML_HEIGHT_END
= 0
*
IT_ALV_GRAPHICS
=
*
IT_HYPERLINK
=
*
IT_ADD_FIELDCAT
=
*
IT_EXCEPT_QINFO
=
*
IR_SALV_FULLSCREEN_ADAPTER
=
* IMPORTING
*
E_EXIT_CAUSED_BY_CALLER
=
*
ES_EXIT_CAUSED_BY_USER
=
TABLES
T_OUTTAB
= IT_GRID_LIST
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS
= 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
* End of Add SKONDANI

" DISPLAY_GRID_LIST

You might also like