Thursday, May 3, 2012

BDC-using session method - infotype 22

*&---------------------------------------------------------------------*
*& Report ZRAJBDC22
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZRAJBDC22.

TYPE-POOLS: SLIS.

TYPES: BEGIN OF TY_22,

PERNR type PERNR, "Personnel No
SUBTY type RP50G-SUBTY, "Sub Type
BEGDA type P0022-BEGDA, "Begin Date
ENDDA type P0022-ENDDA, "End Date
AUSBI type P0022-AUSBI, "Education/training
INSTI type P0022-INSTI, "Institute/location
SLAND type P0022-SLAND, "Country Key
SLABS type P0022-SLABS, "Certificate
ANZKL type P0022-ANZKL, "Duration of course
EMARK type P0022-EMARK, "Final Grade

END OF TY_22.

DATA : IT_22 TYPE TABLE OF TY_22,
WA_22 TYPE TY_22.


data : wa_bdcdata type bdcdata,
it_bdcdata type table of bdcdata.
* g_file type ibipparms-path.

DATA: P_RETURN TYPE BAPIRETURN1.



*------------selection-screen-------------------


DATA: d_ucomm LIKE sy-ucomm.
data : g_file type ibipparms-path.
data : g_file1 type ibipparms-path.
selection-screen begin of block b1 with frame title text-999.
PARAMETERS: p_TXT RADIOBUTTON GROUP rad1 USER-COMMAND ACT DEFAULT 'X',
p_XLS RADIOBUTTON GROUP rad1.


selection-SCREEN end of block b1.


selection-screen begin of block b2 with frame title text-998.
PARAMETERS: p_file type string MODIF ID A, "Text file
* p_file1 type RLGRAP-FILENAME MODIF ID a,
p1_file type RLGRAP-FILENAME MODIF ID b. "Xls/Csv file
* p_file2 type RLGRAP-FILENAME MODIF ID b.
selection-SCREEN end of block b2.

selection-screen begin of block b3 with frame title text-997.

PARAMETERS: p_ses TYPE char12.

selection-screen end of block b3.


AT SELECTION-SCREEN.
d_ucomm = sy-ucomm.

AT SELECTION-SCREEN OUTPUT.
LOOP AT screen.
IF p_TXT = 'X'.
IF screen-group1 = 'B'.
screen-active = 0.
ENDIF.
ELSEIF p_XLS = 'X'.
IF screen-group1 = 'A'.
screen-active = 0.
ENDIF.
ENDIF.
MODIFY screen.
ENDLOOP.



at SELECTION-SCREEN on VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'p_file'
IMPORTING
FILE_NAME = g_file.
p_file = g_file.


at SELECTION-SCREEN on VALUE-REQUEST FOR p1_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'p1_file'
IMPORTING
FILE_NAME = g_file.
p1_file = g_file.

if p_txt = 'X'.
p_file = g_file.
endif.

if p_xls = 'X'.
p1_file = g_file.

endif.

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
* PERFORM f_browse CHANGING p_file1.
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file2.
* PERFORM f_browse CHANGING p_file2.

*------------end of Selection-screen-------------------


START-OF-SELECTION.
*------------------------Logic for up load data from files-------------
*-----------------------CODE FOR TEXT UPLOAD--------------------------

if p_txt = 'X'.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = P_FILE
* FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
* HEADER_LENGTH = 0
* READ_BY_LINE = 'X'
* DAT_MODE = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* CHECK_BOM = ' '
* VIRUS_SCAN_PROFILE =
* NO_AUTH_CHECK = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
DATA_TAB = it_22
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.

IF p_XLS = 'X'.

*------This logic is for executing Excel and csv file------------

data : l_intern type alsmex_tabline occurs 0 with header line.
data : l_index type i.
data : l_start_col type i value '1',
l_start_row type i value '1',
l_end_col type i value '256',
l_end_row type i value '65536'.

if p1_file is not initial.
field-symbols : .
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p1_file
i_begin_col = l_start_col
i_begin_row = l_start_row
i_end_col = l_end_col
i_end_row = l_end_row
TABLES
intern = l_intern
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
others = 3.

if l_intern[] is initial.
* message i010(z1).
exit.
else.
sort l_intern by row col.
loop at l_intern.
move l_intern-col to l_index.
assign component l_index of structure wa_22 to .
if sy-subrc = 0. " Incase there are more xls columns than fields
move l_intern-value to .
endif.
at end of row.
append wa_22 to it_22.
clear wa_22.
endat.
endloop.
endif.

endif.
endif.

*---------------end of logic for upload data-------------------------

BREAK-POINT.

*-----------------Start BDC------------------
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = p_ses
* HOLDDATE = FILLER8
KEEP = 'X'
USER = SY-UNAME
* RECORD = FILLER1
* PROG = SY-CPROG
* DCPFM = '%'
* DATFM = '%'
* IMPORTING
* QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

REFRESH IT_BDCdata.


*perform open_group.
LOOP AT it_22 into wa_22.

*include bdcrecx1.



*perform open_group.

perform BDC_DYNPRO using 'SAPMP50A' '1000' 'X'.
perform BDC_FIELD using 'BDC_OKCODE'
'=INS'.
perform BDC_FIELD using 'RP50G-PERNR'
WA_22-PERNR.
perform BDC_FIELD using 'RP50G-TIMR6'
'X'.
perform BDC_FIELD using 'BDC_CURSOR'
'RP50G-SUBTY'.
perform BDC_FIELD using 'RP50G-CHOIC'
'22'.
perform BDC_FIELD using 'RP50G-SUBTY'
WA_22-SUBTY.
perform BDC_DYNPRO using 'MP002200' '2000' 'X'.
perform BDC_FIELD using 'BDC_CURSOR'
'P0022-EMARK'.
perform BDC_FIELD using 'BDC_OKCODE'
'=UPD'.
perform BDC_FIELD using 'P0022-BEGDA'
WA_22-BEGDA.
perform BDC_FIELD using 'P0022-ENDDA'
WA_22-ENDDA.
perform BDC_FIELD using 'P0022-SLART'
'01'.
perform BDC_FIELD using 'P0022-AUSBI'
WA_22-AUSBI.
perform BDC_FIELD using 'P0022-INSTI'
WA_22-INSTI.
perform BDC_FIELD using 'P0022-SLAND'
WA_22-SLAND.
perform BDC_FIELD using 'P0022-SLABS'
WA_22-SLABS.
perform BDC_FIELD using 'P0022-ANZKL'
WA_22-ANZKL.
perform BDC_FIELD using 'P0022-EMARK'
WA_22-EMARK.


* CALL TRANSACTION 'PA30' USING




*perform close_group.


CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'PA30'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
* SIMUBATCH = ' '
* CTUPARAMS = ' '
TABLES
DYNPROTAB = it_bdcdata
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7
.
IF SY-SUBRC <> 0.
refresh it_bdcdata.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
clear wa_22.


ENDLOOP.


CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*

FORM BDC_DYNPRO USING p_prog
p_dyn
p_dynb.
wa_bdcdata-program = p_prog.
wa_bdcdata-dynpro = p_dyn.
wa_bdcdata-dynbegin = p_dynb.
append wa_bdcdata to it_bdcdata.
clear wa_bdcdata.
ENDFORM. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*

FORM BDC_FIELD USING p_fnam
p_fval.
wa_bdcdata-fnam = p_fnam.
wa_bdcdata-fval = p_fval.
append wa_bdcdata to it_bdcdata.
clear wa_bdcdata.
ENDFORM. " BDC_FIELD


*------------------End BDC-------------------





*&---------------------------------------------------------------------
*
*& Form f_browse
*&---------------------------------------------------------------------

form f_browse CHANGING fc_file.
DATA: lo_gui TYPE REF TO cl_gui_frontend_services,
lv_title TYPE string,
lv_folder TYPE string,
lv_dir TYPE string.

CREATE OBJECT lo_gui.
lv_title = 'Define download location'.
lv_folder = 'C:'.
CALL METHOD lo_gui->directory_browse
EXPORTING
window_title = lv_title
initial_folder = lv_folder
CHANGING
selected_folder = lv_dir.
fc_file = lv_dir.

endform. "f_browse

No comments:

Tutorials on SAP-ABAP

Adobe Interactive Forms Tutorials

Business Server Pages (BSP)

Userexits/BADIs

Web Dynpro for ABAP (Step by step procedure for web dynpro,Tutorials on Web Dynpro,)

ALV Tutorials

goodsites