Saturday, March 12, 2016


Uploading using BAPI

TABLES : T510, T511, PA0007.
TYPE-POOLS : SLIS.
TABLES : T7INA5.
TYPES : BEGIN OF TY_0008,
PERNR TYPE BAPIP0008-PERNR,
BEGDA TYPE CHAR10,
TRFAR TYPE BAPIP0008-TRFAR,
TRFGB TYPE BAPIP0008-TRFGB,
TRFGR TYPE BAPIP0008-TRFGR,
TRFST TYPE BAPIP0008-TRFST,
LGA01(4),
BET01(15),
LGA02(4),
BET02(15),
LGA03(4),
BET03(15),
LGA04(4),
BET04(15),
LGA05(4),
BET05(15),
LGA06(4),
BET06(15),
LGA07(4),
BET07(15),
LGA08(4),
BET08(15),
LGA09(4),
BET09(15),
LGA10(4),
BET10(15),
LGA11(4),
BET11(15),
LGA12(4),
BET12(15),
LGA13(4),
BET13(15),
LGA14(4),
BET14(15),
LGA15(4),
BET15(15),
LGA16(4),
BET16(15),
LGA17(4),
BET17(15),
LGA18(4),
BET18(15),
LGA19(4),
BET19(15),
LGA20(4),
BET20(15),

DATE TYPE SY-DATUM,
ERROR,
END OF TY_0008.

DATA : BEGIN OF WAGETYPES,
LGART(4),
BETRG(15),
END OF WAGETYPES.

DATA : BEGIN OF IT_TAB1 OCCURS 0,
PERNR(8),
BEGDA(8),
ENDDA(8),
TRFAR(2),
TRFGB(2),
TRFGR(8),
TRFST(2),
LGART(4),
BETRG TYPE P0008-BET01,
INDVALUAT(1),
ADSUM,
END OF IT_TAB1.

DATA : T_WAGES TYPE TABLE OF BAPIP0008P WITH HEADER LINE.
DATA : RETURN TYPE BAPIRETURN1.
DATA: P0008 TYPE TABLE OF P0008.
DATA : WA_P0008 TYEP P0008.
DATA : P0001 TYPE TABLE OF P0001.
DATA : WA_0001 TYPE P0001.
DATA : WA_T511 TYPE T511.
DATA : IT_T539A TYPE TABLE OF T539A WITH HEADER LINE.
DATA : BEGDA TYPE SY-DATUM.


TYPES : BEGIN OF TY_LOG,
PERNR(8),
INFTY(04),
BEGDA TYPE SY-DATUM,
ENDDA TYPE SY-DATUM,
TYPE TYPE CAHR1,
ID TYPE BAPIRETURN1-ID,
NUMBER TYPE BAPIRETURN1-NUMBER,
MESSAGE TYPE BAPIRETURN1-MESSAGE,
LINE_COLOR(4) TYPE C,
END OF TY_LOG.

DATA : IT-LOG TYPE TABLE OF TY_LOG.
DATA : WA_LOG TYPE TY_LOG.

DATA : IT_0008 TYPE TABLE OF TY_0008.
DATA : WA_0008 LIKE LINE OF IT_0008.
DATA : T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
G_REPID LIKE SY-REPID VALUE SY-REPID,
T_LISTEVENTS TYPE SLIS_T_EVENT,
T_LISTHEADER TYPE SLIS_T_LISTHEADER,
WA_LISTEVENTS TYPE SLIS_ALV_EVENT,
D_TABIX LIKE SY-TABIX,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_LISTHEADER TYPE SLIS_LISTHEADER.


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITILE TEXT-010.
PARAMETERS : WRK_PATH TYPE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST OR WRK_PATH.

CALL FUNCTION 'F4_FILENAME'.
EXPORTING
PROGRAM_NAME  = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME  = WRK_PATH.

START-OF-SELECTION.
PERFORM UPLOAD_FILE.
PERFORM PROCESS_DATA.
PERFORM UPLOAD_DATA.
PERFORM SHOW_ERROR_FILE.

END-OF-SELECTION.


FORM UPLOAD_FILE.
DATA : L_FILE TYPE STRING.
L_FILE  = WRK_PATH.
CALL METHOD CL_FUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = L_FILE
FILETYPE  = 'ASC'
HAS_FIELD_SEPARATOR  = '#'
CHANGING
DATA_TAB   = IT_0008.

ENDFORM.




FORM PROCESS_DATA.
DATA : P_TRFKZ TYPE T503-TRFKZ.
DATA : P_LGMST TYPE LGMST.
DATA : RTALGRP TYPE T7INA3-ALGRP,
L_TABIX TYPE SY-TABIX,
MM(02) TYPE N,
DD(02) TYPE N,
YYYY TYPE GJAHR.
DATA : BAPIRETURN TYPE BAPIRETURN.


LOOP AT IT_0008 INTO WA_0008.
L_TABIX = SY-TABIX.

CALL FUNCTION 'BAPI_EMPLOYEE_CHECKEXISTENCE'
EXPORTING
NUMBER = WA+_0008-PERNR
IMPORTING
RETURN = BAPIRETURN.

IF BAPIRETURN IS INITIAL.

SPLIT WA_0008-BEGDA AT '.' INTO DD MM YYYY.
PERFORM CONVERT_MMDDYYYY USING DD MM YYYY.
CONCATENATE YYYY MM DD INTO WA_0008-DATE.
CONCATENATE DD MM YYYY INTO WA_0008-BEGDA SEPARATED BY '.'.
MODIFY IT_0008 FROM WA_0008 INDEX L_TABIX.

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL  = WA_0008-BEGDA
IMPORTING
DATE_INTERNAL  = BEGDA
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID = 1
OTHERS  = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

DO 21 TIMES VARYING WAGETYPES-LGART FROM WA_0008-LGA01 NEXT WA_0008-LGA02
VARYING WAGETYPES-BETRG FROM WA_0008-BET01 NEXT WA_0008-BET02.

IF WAGETYPES-LGART IS INITIAL.
CONTINUE.
ELSE.
CLEAR IT_TAB1.
CLEAR WA_T511.

IT_TAB1-PERNR  = WA_0008-PERNR.
IT_TAB1-BEGDA  = BEGDA.
IT_TAB1-ENDDA = '99991231'.
IT_TAB1-TRFAR = WA_0008-TRFAR.
IT_TAB1-TRFGB = WA_0008-TRFGB.
IT_TAB1-TRFGR = WA_0008-TRFGR.
IT_TAB1-TRFST = WA_0008-TRFST.
IT_TAB1-LGART = WAGETYPES-LGART.
IT_tAB1-BETRG = WAGETYPES-BETRG.
APPEND IT_TAB1.
ENDIF.
ENDDO.

LOOP AT IT_T539A.
CLEAR BEGDA.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL   = WA_0008-BEGDA
IMPORTING
DATE_INTERNAL  = BEGDA
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID  = 1
OTHERS     = 2.
IF SY-SUBRC <> 0.
ENDIF.

READ TABLE IT_TAB1 WITH KEY PERNR = WA_0008-PERNR
BEGDA  = BEGDA
LGART = IT_T539A-LGART.

IF SY-SUBRC NE 0.