0% found this document useful (0 votes)
149 views

BDC For Char: Zchar Heading

This document contains code for a report that imports data from an Excel file into an SAP system using BDC calls. It defines internal tables to store the Excel data and final records. It uploads the Excel file data into an internal table, then loops through the table to perform BDC calls to populate fields on various screens and transactions to import the records.

Uploaded by

Sreedhar Konduru
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
149 views

BDC For Char: Zchar Heading

This document contains code for a report that imports data from an Excel file into an SAP system using BDC calls. It defines internal tables to store the Excel data and final records. It uploads the Excel file data into an internal table, then loops through the table to perform BDC calls to populate fields on various screens and transactions to import the records.

Uploaded by

Sreedhar Konduru
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

BDC for CHAR

*&---------------------------------------------------------------------*
*& Report ZCHAR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT

ZCHAR

no standard page heading line-size 255.

*&---------------------------------------------------------------------*
*& Report ZNEWCHAR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
*REPORT

ZNEWCHAR.

*include bdcrecx1.
*
*parameters: dataset(132) lower case.
***
DO NOT CHANGE - the generated data section - DO NOT CHANGE
*
*
If it is nessesary to change the data section use the rules:
*
1.) Each definition of a field exists of two lines
*
2.) The first line shows exactly the comment
*
'* data element: ' followed with the data element
*
which describes the field.
*
If you don't have a data element use the
*
comment without a data element name
*
3.) The second line shows the fieldname of the
*
structure, the fieldname must consist of
*
a fieldname and optional the character '_' and
*
three numbers and the field length in brackets
*
4.) Each field must be type C.
*
*** Generated data section with specific formatting - DO NOT CHANGE
TYPES: begin of record,
* data element: ATNAM
ATNAM_001(030),

***

***

* data element: ATRDA


*
ATRDA_002(010),
* data element: ATBEZ
ATBEZ_003(030),
* data element: ATMST
ATMST_004(001),
* data element: ATUDF
FORMAT_005(018),
* data element: ATEIN
*
ATEIN_006(001),
* data element: ATAST
ATAST_007(002),
* data element: ATADZ
ATADZ_008(002),
* data element: ATEI6
EINH2_009(006),
* data element: ATEIN
*
ATEIN_010(001),
* data element: ATBEZ
ATBEZ_011(030),
* data element: ATMST
ATMST_012(001),
* data element: ATUDF
FORMAT_013(018),
* data element: ATEIN
ATEIN_014(001),
* data element: ANZST
ANZST_015(002),
* data element: ANZDZ
ANZDZ_016(002),
* data element: ATEI6
EINHE_017(006),
* data element: ATSCH
ATSCH_018(030),
end of record.
*** End generated data section ***

*&----------------------------------------------------------------------*
*&
I N T E R N A L T A B L E
D E C L A R A T I O N S
*&----------------------------------------------------------------------*
DATA : IT_FINAL
TYPE STANDARD TABLE OF record.
DATA : IT_INTRN
TYPE STANDARD TABLE OF ALSMEX_TABLINE.
*&----------------------------------------------------------------------*
*&
W O R K A R E A
D E C L A R A T I O N S
*&----------------------------------------------------------------------*
DATA: IS_INTRN
TYPE ALSMEX_TABLINE,

IS_FINAL
record

TYPE record,
type record.

*&----------------------------------------------------------------------*
*&
V A R I A B L E
D E C L A R A T I O N S
*&----------------------------------------------------------------------*
DATA : W_FNAME TYPE RLGRAP-FILENAME
.
DATA : W_COUNT
TYPE I.

*&----------------------------------------------------------------------*
*&
C O N S T A N T S
D E C L A R A T I O N S
*&----------------------------------------------------------------------*
DATA: C_WAIT
LIKE BAPITAWAIT VALUE 'X'
,
" Using the command `COMMIT AND WAIT`
C_BCOL
TYPE I
VALUE 1
,
"START COLUM
N
C_BROW
TYPE I
VALUE 2
,
"START ROW
C_ECOL
TYPE I
VALUE 200
,
"Ending colu
mn
C_EROW
TYPE I
VALUE 40000
.
"ENDING ROW
*Used to stores error information from CALL TRANSACTION Function Module
DATA: BEGIN OF MESSTAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF MESSTAB.
*Used to store BDC data
DATA: BDCDATA
TYPE STANDARD TABLE OF BDCDATA INITIAL SIZE 1 WITH HEADER LIN
E.
DATA: W_TEXTOUT
LIKE T100-TEXT.
* This method of file download with check uses the latest techniques
* and achieves a very neat solution
DATA: LD_FILENAME TYPE STRING,
LD_PATH TYPE STRING,
LD_FULLPATH TYPE STRING,
LD_RESULT TYPE I.

*&----------------------------------------------------------------------*
*&
S E L E C T I O N
S C R E E N D E S I G N I N S
*&----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_FNAME TYPE RLGRAP-FILENAME OBLIGATORY
.
*PARAMETERS CTUMODE LIKE CTU_PARAMS-DISMODE DEFAULT 'E'.
DATA CTUMODE LIKE CTU_PARAMS-DISMODE VALUE 'A'.
"A: show all dynpros
"E: show dynpro on error only
"N: do not display dynpro

SELECTION-SCREEN END OF BLOCK B1

*&----------------------------------------------------------------------*
*&
AT - S E L E C T I O N
S C R E E N
*&----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = 'ZCHAR'
DYNPRO_NUMBER = '1000'
FIELD_NAME
= 'P_FNAME'
CHANGING
FILE_NAME
= P_FNAME.
IF NOT P_FNAME IS INITIAL.
W_FNAME = P_FNAME.
ENDIF.
PERFORM SUB_UPLOADEXCEL.
PERFORM PERFORM_BDC.

start-of-selection.
*perform open_dataset using dataset.
*perform open_group.
*do.
*
*read dataset dataset into record.
*if sy-subrc <> 0. exit. endif.
FORM PERFORM_BDC .
LOOP AT IT_FINAL INTO record.
perform bdc_dynpro
using 'SAPMCTAV' '0100'.
perform bdc_field
using 'BDC_CURSOR'
'CABN-ATNAM'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
perform bdc_field
using 'CABN-ATNAM'
record-ATNAM_001.
*perform bdc_field
using 'RCTAV-ATRDA'
*
record-ATRDA_002.
perform bdc_dynpro
using 'SAPLCTMV' '0110'.
perform bdc_field
using 'BDC_OKCODE'
'=FORMAT'.
perform bdc_field
using 'CABNT-ATBEZ'
record-ATBEZ_003.
perform bdc_field
using 'CABN-ATMST'

record-ATMST_004.
using 'BDC_CURSOR'
'RCTMV-FORMAT'.
perform bdc_field
using 'RCTMV-FORMAT'
record-FORMAT_005.
*perform bdc_field
using 'RCTMV-ATEIN'
*
record-ATEIN_006.
perform bdc_dynpro
using 'SAPLCTMV' '0150'.
perform bdc_field
using 'BDC_CURSOR'
'RCTMV-EINH2'.
perform bdc_field
using 'BDC_OKCODE'
'RETU'.
perform bdc_field
using 'RCTMV-ATAST'
record-ATAST_007.
perform bdc_field
using 'RCTMV-ATADZ'
record-ATADZ_008.
perform bdc_field
using 'RCTMV-EINH2'
record-EINH2_009.
*perform bdc_field
using 'RCTMV-ATEIN'
*
record-ATEIN_010.
perform bdc_dynpro
using 'SAPLCTMV' '0110'.
perform bdc_field
using 'BDC_OKCODE'
'=SICH'.
perform bdc_field
using 'CABNT-ATBEZ'
record-ATBEZ_011.
perform bdc_field
using 'CABN-ATMST'
record-ATMST_012.
perform bdc_field
using 'BDC_CURSOR'
'CABN-ANZST'.
perform bdc_field
using 'RCTMV-FORMAT'
record-FORMAT_013.
perform bdc_field
using 'RCTMV-ATEIN'
record-ATEIN_014.
perform bdc_field
using 'CABN-ANZST'
record-ANZST_015.
perform bdc_field
using 'CABN-ANZDZ'
record-ANZDZ_016.
perform bdc_field
using 'RCTMV-EINHE'
record-EINHE_017.
perform bdc_field
using 'CABN-ATSCH'
record-ATSCH_018.
*perform bdc_transaction using 'CT01'.
perform bdc_field

*enddo.
*perform close_group.
*perform close_dataset using dataset.
"at LAST.

CALL TRANSACTION 'CT01' USING BDCDATA


MODE CTUMODE
UPDATE 'A'.
clear record.
clear BDCDATA[].
"ENDAT.
endloop.
ENDFORM.

FORM SUB_UPLOADEXCEL .
IF NOT W_FNAME IS INITIAL.
DATA : WL_INDEX TYPE I.
FIELD-SYMBOLS <FS>.
REFRESH: IT_INTRN,IT_FINAL.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME
= W_FNAME
I_BEGIN_COL = C_BCOL
I_BEGIN_ROW = C_BROW
I_END_COL
= C_ECOL
I_END_ROW
= C_EROW
TABLES
INTERN
= IT_INTRN.
*--- Sorting the internal table
SORT IT_INTRN BY ROW COL.
* CLEAR IT_INTERN.
LOOP AT IT_INTRN INTO IS_INTRN.
MOVE IS_INTRN-COL TO WL_INDEX.
*--- Assigning the each record to an internal table row
ASSIGN COMPONENT WL_INDEX OF STRUCTURE IS_FINAL TO <FS>.
IF SY-SUBRC = 0.
*--- Asigning the field value to a field symbol
CONDENSE IS_INTRN-VALUE.
MOVE IS_INTRN-VALUE TO <FS>.
ENDIF.
AT END OF ROW.
APPEND IS_FINAL TO IT_FINAL.
CLEAR IS_FINAL.
ENDAT.
ENDLOOP.
CLEAR : P_FNAME, W_FNAME.
ELSE.
MESSAGE I002(SY) WITH 'Select valid file'.
ENDIF.

ENDFORM.

" SUB_UPLOADEXCEL

*----------------------------------------------------------------------*
*
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 <> SPACE.
"NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
"BDC_FIELD

You might also like