Anda di halaman 1dari 39

BDC ( Batch Data Communication ) ---------------------------------> Every BDc program take it as a Executable Program.

Legacy File ----> BDC Program ----> SAP DB --> We Have 3 Methods 1. Call Transaction` 2. Session Method 3. LSMW --> Two Types of files in SAP 1. Legacy File or local File 2. Sequential File. SAP ) -- Placed at Presentation Server ( DESKTOP ) -- Placed at Application Server ( WITH IN

--> All the Sequential files are stored in AL11 tcode. --> There are 2 types of file formats 1. ASC -- No Saperator between fields 2. DAT -- Fields are saperated by TAB space --> Local Files data is uploaded into Internal table using FM --> Local Files data is downloaded from Internal table using FM GUI_DOWNLOAD. Presentation Server( Local Files ) ---------------------------------UPLOAD: -----Two parameters 1. File Path ( c:/....... ) 2. File Type ( ASC, DAT ) GUI_UPLOAD.

EXAMPLE For UPLOAD ************************* *&---------------------------------------------------------------------* *& SELECTION-SCREEN *&---------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001. PARAMETERS : p_fname LIKE rlgrap-filename. SELECTION-SCREEN END OF BLOCK bk1.

*&---------------------------------------------------------------------*

*& TYPES *&---------------------------------------------------------------------* TYPES: BEGIN OF t_lfa1, lifnr TYPE lfa1-lifnr, name1 TYPE lfa1-name1, land1 TYPE lfa1-land1, END OF t_lfa1. *&---------------------------------------------------------------------* *& DATA *&---------------------------------------------------------------------* DATA: i_lfa1 TYPE STANDARD TABLE OF t_lfa1, wa_lfa1 type t_lfa1, * Need to declare file name type as STRING to match with fucntion * module import parameters type v_fname type string. *&---------------------------------------------------------------------* *& INITIALIZATION *&---------------------------------------------------------------------* INITIALIZATION. * Initializing the File Name p_fname = 'C:\temp\'. *&---------------------------------------------------------------------* *& AT SELECTION SCREEN *&---------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname. * F4 functionality for File Name CALL FUNCTION 'F4_FILENAME' EXPORTING program_name = syst-cprog dynpro_number = syst-dynnr field_name = ' ' IMPORTING file_name = p_fname. *&---------------------------------------------------------------------* *& START-OF-SELECTION *&---------------------------------------------------------------------* START-OF-SELECTION. " Start of selection os Mandatory MOVE: p_fname TO v_fname. * Upload data from flat file and store it in an Internal table CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = v_fname filetype = 'ASC' has_field_separator = 'X'

read_by_line TABLES data_tab

= 'X' = i_lfa1.

* Display the uploaded data LOOP AT i_lfa1 INTO wa_lfa1. WRITE:/ wa_lfa1-lifnr, wa_lfa1-name1, wa_lfa1-land1. ENDLOOP.

************* EXAMPLE FOR DOWNLOAD *************************

*&---------------------------------------------------------------------* *& SELECTION-SCREEN *&---------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001. PARAMETERS : p_fname LIKE rlgrap-filename. SELECTION-SCREEN END OF BLOCK bk1.

*&---------------------------------------------------------------------* *& TYPES *&---------------------------------------------------------------------* TYPES: BEGIN OF t_lfa1, lifnr TYPE lfa1-lifnr, name1 TYPE lfa1-name1, land1 TYPE lfa1-land1, END OF t_lfa1. *&---------------------------------------------------------------------* *& DATA *&---------------------------------------------------------------------* DATA: i_lfa1 TYPE STANDARD TABLE OF t_lfa1, wa_lfa1 type t_lfa1, * Need to declare file name type as STRING to match with fucntion * module import parameters type v_fname type string. *&---------------------------------------------------------------------* *& INITIALIZATION *&---------------------------------------------------------------------* INITIALIZATION. * Initializing the File Name p_fname = 'C:\temp\'. *&---------------------------------------------------------------------* *& AT SELECTION SCREEN *&---------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.

* F4 functionality for File Name CALL FUNCTION 'F4_FILENAME' EXPORTING program_name = syst-cprog dynpro_number = syst-dynnr field_name = ' ' IMPORTING file_name = p_fname. *&---------------------------------------------------------------------* *& START-OF-SELECTION *&---------------------------------------------------------------------* START-OF-SELECTION. MOVE: p_fname TO v_fname. SELECT lifnr name1 land1 INTO TABLE i_lfa1 FROM lfa1 WHERE land1 EQ 'US'. IF sy-subrc EQ 0. * Download data from Internal table and store it in Local File CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = v_fname filetype = 'ASC' write_field_separator = 'X' TABLES data_tab = i_lfa1. IF sy-subrc EQ 0. * Display the Downloaded data LOOP AT i_lfa1 INTO wa_lfa1. WRITE:/ wa_lfa1-lifnr, wa_lfa1-name1, wa_lfa1-land1. ENDLOOP. ENDIF. ENDIF. ******** TestData *************** 101 Ram Hyd 102 Raj Blr 103 Viswa Dlh

CALL TRANSACTION : -----------------1. It is compatible for small amount of data only. 2. It process the data Synchronously. i.e., The data is updated at the time of execution. 3. It updates data both Synchronously and Asynchronously. When we use Synchronous mode, it always verify all the data updated successfully in the database. When we use Asynchronous mode, the system can not wait till all the data updated in the database. 4. It can handle only one application at a time. 5. It does not have Log file, we need to design logfile explicitly using BDCMSGCOLL stucture. Syntax : CALL TRANSACTION <T.Code> USING <BDCTAB> MODE <A/N/E> UPDATE <S/A> MESSAGES INTO <BDCMSGCOLL Int.Table>

A - All screen mode. All the screen of transaction are displayed. N - No screen mode. No screen is displayed when you execute the transaction. E - Error screen. Only those screens are displayed where you have error record.

Steps for CALL TRANSACTION Method : ----------------------------------1. Interanal table for the data (structure similler to local file) 2. BDCTAB like BDCDATA. 3. Use UPLOAD/WS_UPLOAD/GUI_UPLOAD or DATASETS for upload data from local file to internal table (i.e. ITAB). 4. LOOP at Itab. Populate BDCTAB table. CALL TRANSACTION <T.Code> USING <BDCTAB> MODE <A/N/E>

UPDATE <S/A> Refresh BDCTAB. ENDLOOP.

MESSAGES INTO <BDCMSGCOLL Int.Table>

***************************************************************************** *************** *&---------------------------------------------------------------------* *& SELECTION-SCREEN *&---------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001. PARAMETERS : p_fname TYPE localfile. SELECTION-SCREEN END OF BLOCK bk1. *&---------------------------------------------------------------------* *& * TYPES Type declaration for Customer data BEGIN OF t_customer, kunnr ktokd name1 sortl ort01 land1 spras pstlz lzone TYPE kna1-kunnr, TYPE kna1-ktokd, TYPE kna1-name1, TYPE kna1-sortl, TYPE kna1-ort01, TYPE kna1-land1, TYPE kna1-spras, TYPE kna1-pstlz, TYPE kna1-lzone, *&---------------------------------------------------------------------*

TYPES:

END OF t_customer. *&---------------------------------------------------------------------* *& DATA: v_fname TYPE string, * Internal Table Declaration for Customer data i_customer TYPE STANDARD TABLE OF t_customer, DATA *&---------------------------------------------------------------------*

wa_customer TYPE t_customer, * Internal Table Declaration for BDCDATA wa_bdcdata i_bdcdata * TYPE bdcdata, TYPE STANDARD TABLE OF bdcdata,

Internal Table Declaration for BDCMSGCOLL wa_bdcmsgcoll TYPE bdcmsgcoll, i_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll.

*&---------------------------------------------------------------------* *& INITIALIZATION. * Initializing the File Name p_fname = 'C:\temp\'. INITIALIZATION *&---------------------------------------------------------------------*

*&---------------------------------------------------------------------* *& AT SELECTION SCREEN *&---------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname. * F4 functionality for File Name CALL FUNCTION 'F4_FILENAME' EXPORTING program_name field_name IMPORTING file_name = p_fname. = syst-cprog = ' ' dynpro_number = syst-dynnr

*&---------------------------------------------------------------------* *& START-OF-SELECTION. v_fname = p_fname. * Upload data from flat file and store it in an Internal table START-OF-SELECTION *&---------------------------------------------------------------------*

CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename filetype read_by_line TABLES data_tab * Process Customer Data LOOP AT i_customer INTO wa_customer. CLEAR wa_bdcdata. REFRESH i_bdcdata[]. PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field USING 'SAPMF02D' '0107'. USING 'BDC_CURSOR' 'RF02D-KTOKD'. USING 'BDC_OKCODE' '/00'. USING 'RF02D-KUNNR' wa_customer-kunnr. USING 'RF02D-KTOKD' wa_customer-ktokd. USING 'SAPMF02D' '0110'. USING 'BDC_CURSOR' 'KNA1-SPRAS'. USING 'BDC_OKCODE' '/00'. USING 'KNA1-NAME1' wa_customer-name1. USING 'KNA1-SORTL' wa_customer-sortl. USING 'KNA1-ORT01' wa_customer-ort01. USING 'KNA1-LAND1' wa_customer-land1. USING 'KNA1-SPRAS' wa_customer-spras. "Language. "Country. "City. "Search Term. "Name. "Acc.Group. "Customer No. = i_customer. = v_fname = 'ASC' = 'X'

has_field_separator = 'X'

PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field * Call Transaction

USING 'KNA1-PSTLZ' wa_customer-pstlz. USING 'SAPMF02D' '0120'. USING 'BDC_CURSOR' 'KNA1-LZONE'. USING 'BDC_OKCODE' '=UPDA'. USING 'KNA1-LZONE' wa_customer-lzone. "Tran.Zone. "Postol Code.

CALL TRANSACTION 'VD01' USING i_bdcdata MODE 'A' UPDATE 'S' MESSAGES INTO i_bdcmsgcoll. ENDLOOP. PERFORM format_message_text. *&--------------------------------------------------------------------* *& Form BDC_DYNPRO New Screen dynpro. *&--------------------------------------------------------------------* FORM bdc_dynpro USING program CLEAR wa_bdcdata. wa_bdcdata-program wa_bdcdata-dynpro = program. = dynpro.

wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO i_bdcdata. ENDFORM. "BDC_DYNPRO

*----------------------------------------------------------------------* * Insert field * *----------------------------------------------------------------------* FORM bdc_field USING fnam fval. IF fval <> space. CLEAR wa_bdcdata. wa_bdcdata-fnam = fnam. wa_bdcdata-fval = fval. APPEND wa_bdcdata TO i_bdcdata. ENDIF. ENDFORM. "BDC_FIELD

*&---------------------------------------------------------------------* *& Form format_message_text *&---------------------------------------------------------------------* FORM format_message_text . DATA: lf_msg TYPE string.

WRITE:/10 'Message Id', 35 'Megno', 45 'Msg.Type', 55 'Message Info'. LOOP AT i_bdcmsgcoll INTO wa_bdcmsgcoll. CALL FUNCTION 'FORMAT_MESSAGE' EXPORTING id lang no v1 v2 v3 v4 IMPORTING msg EXCEPTIONS not_found = 1 OTHERS = 2. = lf_msg = wa_bdcmsgcoll-msgid = sy-langu = wa_bdcmsgcoll-msgnr = wa_bdcmsgcoll-msgv1 = wa_bdcmsgcoll-msgv2 = wa_bdcmsgcoll-msgv3 = wa_bdcmsgcoll-msgv4

IF sy-subrc EQ 0. WRITE:/10 wa_bdcmsgcoll-msgid, 35 wa_bdcmsgcoll-msgnr, 45 wa_bdcmsgcoll-msgtyp, 55 lf_msg. ENDIF. ENDLOOP. ENDFORM. " format_message_text

************** Test Data ******************** A1234 0001 Ram IR Banglore IN E 522426 0000000001

BDC - Session Method


BDC (Batch Data Communication): It Transfers or upload the datas(records) from Legacy(Non SAP) system to SAP system. Batch input means bulk amount of data. It is a programming method. Types: It has two types
1. CALL TRANSACTION METHOD. 2. SESSION METHOD (C L A S S I C A L ) .

Session Method: 1. Asynchronous Processing. 2. Synchronous database updates. 3. Transfer of data for multiple transactions. Using FM bdc_insert. 4. As compared to call transaction, this is slow. 5. Best suited for bulk transfer. 6. Automatic error handling. 7. Error logs are created. 8. The value of sy-subrc is never returned. Because records are stored temporary in session and after the records are updated to the database. 9. You can store the sessions and it can be used for later processing. 10. it can handle small amount of data as well as large amount of data. 11. Function modules : F4_FILENAME ( Open the legacy file [.txt or .xls]) . TEXT_CONVERT_XSL_TO_SAP ( Convert the .xls file to sap format) : Using for only .xls files. GUI_UPLOAD : Using for only .txt files. BDC_OPEN_GROUP : To create a new session.(No session 1). BDC_INSERT : To add a transaction to a batch input session. BDC_CLOSE_GROUP : To close the session.

Example 1: Session method ( .txt file) Customer(xd01) master creation:


report ZRBDC_XD01_RAJA no standard page heading line-size 255. *include bdcrecx1. data: begin of record OCCURS 0, * data element: BUKRS BUKRS_001(004), * data element: KTOKD KTOKD_002(004), * data element: ANRED ANRED_003(015), * data element: NAME1_GP NAME1_004(035), * data element: SORTL SORTL_005(010), * data element: ORT01_GP ORT01_006(035), * data element: PSTLZ PSTLZ_007(010), * data element: LAND1_GP LAND1_008(003), * data element: REGIO REGIO_009(003), * data element: SPRAS SPRAS_010(002), * data element: CIVVE CIVVE_011(001), * data element: AKONT AKONT_012(010), end of record. ***************GLOBAL STR BDCDATA*********************** DATA: IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA, WA_BDCDATA TYPE BDCDATA. DATA: FILE1 TYPE STRING. ******************************************************** ******************UPLOAD FLAT FILE********************** ******************SELECTION SCREEN********************** SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME. PARAMETERS: FILE TYPE LOCALFILE OBLIGATORY. SELECTION-SCREEN: END OF BLOCK B1. AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE.

********************************************************** ******************FUNCTION MODULE************************ CALL FUNCTION 'F4_FILENAME' EXPORTING PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR * FIELD_NAME ='' IMPORTING FILE_NAME = FILE. FILE1 = FILE. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = FILE1 FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' * HEADER_LENGTH =0 * READ_BY_LINE = 'X' * DAT_MODE ='' * IMPORTING * FILELENGTH = * HEADER = tables data_tab = RECORD 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. *************************************************** **************OPEN SESSION*************************

CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT * DEST = FILLER8 GROUP = 'demo' "LOGON USERNAME * HOLDDATE = FILLER8 KEEP = 'X' USER = SY-UNAME * RECORD = FILLER1 * PROG = SY-CPROG * 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. *** End generated data section *** start-of-selection. *perform open_group. LOOP AT RECORD. perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field using 'SAPMF02D' '0100'. using 'BDC_CURSOR' 'RF02D-KTOKD'. using 'BDC_OKCODE' '/00'. using 'RF02D-BUKRS' record-BUKRS_001. using 'RF02D-KTOKD' record-KTOKD_002. using 'SAPMF02D' '0110'. using 'BDC_CURSOR' 'KNA1-SPRAS'. using 'BDC_OKCODE' '/00'.

perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field

using 'KNA1-ANRED' record-ANRED_003. using 'KNA1-NAME1' record-NAME1_004. using 'KNA1-SORTL' record-SORTL_005. using 'KNA1-ORT01' record-ORT01_006. using 'KNA1-PSTLZ' record-PSTLZ_007. using 'KNA1-LAND1' record-LAND1_008. using 'KNA1-REGIO' record-REGIO_009. using 'KNA1-SPRAS' record-SPRAS_010. using 'SAPMF02D' '0120'. using 'BDC_CURSOR' 'KNA1-LIFNR'. using 'BDC_OKCODE' '/00'. using 'SAPMF02D' '0125'. using 'BDC_CURSOR' 'KNA1-NIELS'. using 'BDC_OKCODE' '/00'. using 'SAPMF02D' '0130'. using 'BDC_CURSOR' 'KNBK-BANKS(01)'. using 'BDC_OKCODE' '=ENTR'. using 'SAPMF02D' '0340'. using 'BDC_CURSOR' 'RF02D-KUNNR'. using 'BDC_OKCODE' '=ENTR'. using 'SAPMF02D' '0370'. using 'BDC_CURSOR' 'RF02D-KUNNR'. using 'BDC_OKCODE' '=ENTR'. using 'KNA1-CIVVE' record-CIVVE_011. using 'SAPMF02D' '0360'. using 'BDC_CURSOR' 'KNVK-NAMEV(01)'. using 'BDC_OKCODE' '=ENTR'. using 'SAPMF02D' '0210'. using 'BDC_CURSOR' 'KNB1-AKONT'. using 'BDC_OKCODE'

'/00'. using 'KNB1-AKONT' record-AKONT_012. perform bdc_dynpro using 'SAPMF02D' '0215'. perform bdc_field using 'BDC_CURSOR' 'KNB1-ZTERM'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_dynpro using 'SAPMF02D' '0220'. perform bdc_field using 'BDC_CURSOR' 'KNB5-MAHNA'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_dynpro using 'SAPMF02D' '0230'. perform bdc_field using 'BDC_CURSOR' 'KNB1-VRSNR'. perform bdc_field using 'BDC_OKCODE' '/00'. *perform bdc_transaction using 'XD01'. perform bdc_field

***************************************************** ****************USE BDC INSERT FM*********************** CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = 'XD01' * 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. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. refresh it_bdcdata. ENDLOOP. ************************************************************ *perform close_group.

******************CALL SESSION CLOSE FM********************* CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS NOT_OPEN =1 QUEUE_ERROR =2 OTHERS =3 . IF sy-subrc <> 0. WRITE:'SESSION CREATED go to sm35'. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ************************************************************ ************FORM BDC_DYPRO********************************** FORM BDC_DYNPRO USING PROGRAM DYNPRO. CLEAR WA_BDCDATA. WA_BDCDATA-PROGRAM = PROGRAM. WA_BDCDATA-DYNPRO = DYNPRO. WA_BDCDATA-DYNBEGIN = 'X'. APPEND WA_BDCDATA TO IT_BDCDATA. ENDFORM. ************************************************************ *****************FORM BDC_FIELDS************************** FORM BDC_FIELD USING FNAM FVAL. CLEAR WA_BDCDATA. WA_BDCDATA-FNAM = FNAM. WA_BDCDATA-FVAL = FVAL. APPEND WA_BDCDATA TO IT_BDCDATA. ENDFORM. ************************************************************

record: (.txt file):


1000 YB01 mr IN NAGERCOIL 1000 YB01 mr IN NAGERCOIL RAJA50 629401 RAJA51 629401 IN IN 18 18 EN EN X X 19103103 19103103

Example 2: Session method ( .xls file) Customer(xd01) master creation:


report ZRBDC_XD01_RAJA no standard page heading line-size 255. *include bdcrecx1. TYPE-POOLS TRUXS. This is use to data conversion in TEXT_CONVERT_XLS_TO_SAP. data: begin of record OCCURS 0, * data element: BUKRS BUKRS_001(004), * data element: KTOKD KTOKD_002(004), * data element: ANRED ANRED_003(015), * data element: NAME1_GP NAME1_004(035), * data element: SORTL SORTL_005(010), * data element: ORT01_GP ORT01_006(035), * data element: PSTLZ PSTLZ_007(010), * data element: LAND1_GP LAND1_008(003), * data element: REGIO REGIO_009(003), * data element: SPRAS SPRAS_010(002), * data element: CIVVE CIVVE_011(001), * data element: AKONT AKONT_012(010), end of record. ***************GLOBAL STR BDCDATA*********************** DATA: IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA, WA_BDCDATA TYPE BDCDATA. ******************************************************** ******************UPLOAD FLAT FILE********************** ******************SELECTION SCREEN********************** DATA IT_RAW TYPE TRUXS_T_TEXT_DATA. PARAMETERS PATH TYPE RLGRAP-FILENAME OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUEST FOR PATH. ********************************************************** ******************FUNCTION MODULE************************ CALL FUNCTION 'F4_FILENAME' EXPORTING

PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR FIELD_NAME = 'path' IMPORTING FILE_NAME = path. CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' EXPORTING * I_FIELD_SEPERATOR = * I_LINE_HEADER = I_TAB_RAW_DATA = IT_RAW I_FILENAME = PATH TABLES I_TAB_CONVERTED_DATA = RECORD * EXCEPTIONS * CONVERSION_FAILED =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. *************************************************** **************OPEN SESSION************************* CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT * DEST = FILLER8 GROUP = 'demo' "LOGON USERNAME * HOLDDATE = FILLER8 KEEP = 'X' USER = SY-UNAME * RECORD = FILLER1 * PROG = SY-CPROG * 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. *** End generated data section *** start-of-selection. *perform open_group. LOOP AT RECORD. perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field using 'SAPMF02D' '0100'. using 'BDC_CURSOR' 'RF02D-KTOKD'. using 'BDC_OKCODE' '/00'. using 'RF02D-BUKRS' record-BUKRS_001. using 'RF02D-KTOKD' record-KTOKD_002. using 'SAPMF02D' '0110'. using 'BDC_CURSOR' 'KNA1-SPRAS'. using 'BDC_OKCODE' '/00'. using 'KNA1-ANRED' record-ANRED_003. using 'KNA1-NAME1' record-NAME1_004. using 'KNA1-SORTL' record-SORTL_005. using 'KNA1-ORT01' record-ORT01_006. using 'KNA1-PSTLZ' record-PSTLZ_007. using 'KNA1-LAND1' record-LAND1_008. using 'KNA1-REGIO' record-REGIO_009. using 'KNA1-SPRAS' record-SPRAS_010. using 'SAPMF02D' '0120'. using 'BDC_CURSOR' 'KNA1-LIFNR'. using 'BDC_OKCODE' '/00'. using 'SAPMF02D' '0125'. using 'BDC_CURSOR' 'KNA1-NIELS'. using 'BDC_OKCODE' '/00'. using 'SAPMF02D' '0130'. using 'BDC_CURSOR' 'KNBK-BANKS(01)'.

perform bdc_field

using 'BDC_OKCODE' '=ENTR'. perform bdc_dynpro using 'SAPMF02D' '0340'. perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'. perform bdc_field using 'BDC_OKCODE' '=ENTR'. perform bdc_dynpro using 'SAPMF02D' '0370'. perform bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'. perform bdc_field using 'BDC_OKCODE' '=ENTR'. perform bdc_field using 'KNA1-CIVVE' record-CIVVE_011. perform bdc_dynpro using 'SAPMF02D' '0360'. perform bdc_field using 'BDC_CURSOR' 'KNVK-NAMEV(01)'. perform bdc_field using 'BDC_OKCODE' '=ENTR'. perform bdc_dynpro using 'SAPMF02D' '0210'. perform bdc_field using 'BDC_CURSOR' 'KNB1-AKONT'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_field using 'KNB1-AKONT' record-AKONT_012. perform bdc_dynpro using 'SAPMF02D' '0215'. perform bdc_field using 'BDC_CURSOR' 'KNB1-ZTERM'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_dynpro using 'SAPMF02D' '0220'. perform bdc_field using 'BDC_CURSOR' 'KNB5-MAHNA'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_dynpro using 'SAPMF02D' '0230'. perform bdc_field using 'BDC_CURSOR' 'KNB1-VRSNR'. perform bdc_field using 'BDC_OKCODE' '/00'. *perform bdc_transaction using 'XD01'.

***************************************************** ****************USE BDC INSERT FM*********************** CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = 'XD01' * 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. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. refresh it_bdcdata. ENDLOOP. ************************************************************ *perform close_group. ******************CALL SESSION CLOSE FM********************* CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS NOT_OPEN =1 QUEUE_ERROR =2 OTHERS =3 . IF sy-subrc <> 0. WRITE:'SESSION CREATED go to sm35'. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ************************************************************ ************FORM BDC_DYPRO********************************** FORM BDC_DYNPRO USING PROGRAM DYNPRO. CLEAR WA_BDCDATA. WA_BDCDATA-PROGRAM = PROGRAM. WA_BDCDATA-DYNPRO = DYNPRO. WA_BDCDATA-DYNBEGIN = 'X'. APPEND WA_BDCDATA TO IT_BDCDATA. ENDFORM.

************************************************************ *****************FORM BDC_FIELDS************************** FORM BDC_FIELD USING FNAM FVAL. CLEAR WA_BDCDATA. WA_BDCDATA-FNAM = FNAM. WA_BDCDATA-FVAL = FVAL. APPEND WA_BDCDATA TO IT_BDCDATA. ENDFORM. ************************************************************

record: (.txt file):


1000 YB01 mr IN NAGERCOIL 1000 YB01 mr IN NAGERCOIL RAJA50 629401 RAJA51 629401 IN IN 18 18 EN EN X X 19103103 19103103

BDC-Call Transaction method


BDC (Batch Data Communication): It Transfers or upload the datas(records) from Legacy(Non SAP) system to SAP system. Batch input means bulk amount of data. It is a programming method. Types: It has two types
1. CALL TRANSACTION METHOD. 2. SESSION METHOD (C L A S S I C A L ) .

Call Transaction method: 1. synchronous Processing. (Data or record) 2. Synchronous and Asynchronous database updates.

3. Transfer of data for individual transaction. 4. This is more faster than session method. 5. Not suited for bulk transfer. 6. No automatic error handling. 7. Error logs are not created. 8. The value of sy-subrc returned to 0 if successful. 9. The system won't store data for later processing. This is online processing. 10. It can handle small amount of data. 11. Function modules : F4_FILENAME ( Open the legacy file [.txt or .xls]) . TEXT_CONVERT_XSL_TO_SAP ( Convert the .xls file to sap format) : Using for only .xls files. GUI_UPLOAD : Using for only .txt files. Step-by-Step creation: Create the recording : Using T-code SHDB. Click new recording then put the recoding name and transaction code (xd01 customer, xk01- vender, mm01 material master creation) then click continue or press enter. Thereafter put all the required datas into the transaction screen. Note: Must provide the mandatory fields datas. After finished recording to save and come back. Select your record then click program button. Transfer the recording to ABAP Editor (SE38). Put the program name in the pop up window then click continue or press enter. Automatically open the report in se38. Define the type-pools and call the function modules. Example 1: (call transaction to upload .xls file data) customer master creation
REPORT ZBDC_VAI NO STANDARD PAGE HEADING LINE-SIZE 255. INCLUDE BDCRECX1. TYPE-POOLS TRUXS. This is use to data conversion in TEXT_CONVERT_XLS_TO_SAP. ***************internal table************************************** DATA: BEGIN OF RECORD OCCURS 0, * data element: BUKRS BUKRS_001(004), * data element: KTOKD KTOKD_002(004),

* data element: NAME1_GP NAME1_003(035), * data element: LAND1_GP LAND1_004(003), * data element: REGIO REGIO_005(003), * data element: SPRAS SPRAS_006(002), * data element: CIVVE CIVVE_007(001), * data element: AKONT AKONT_008(010), END OF RECORD. *** End generated data section *** DATA IT_RAW TYPE TRUXS_T_TEXT_DATA. PARAMETERS PATH TYPE RLGRAP-FILENAME OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUEST FOR PATH. CALL FUNCTION 'F4_FILENAME' EXPORTING PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR FIELD_NAME = 'PATH' IMPORTING FILE_NAME = PATH . CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' EXPORTING * I_FIELD_SEPERATOR = * I_LINE_HEADER = I_TAB_RAW_DATA = IT_RAW I_FILENAME = PATH TABLES I_TAB_CONVERTED_DATA = RECORD * EXCEPTIONS * CONVERSION_FAILED =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. START-OF-SELECTION. LOOP AT RECORD. PERFORM OPEN_GROUP. PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD USING 'SAPMF02D' '0100'. USING 'BDC_CURSOR' 'RF02D-KTOKD'. USING 'BDC_OKCODE' '/00'. USING 'RF02D-BUKRS'

PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD

RECORD-BUKRS_001. USING 'RF02D-KTOKD' RECORD-KTOKD_002. USING 'SAPMF02D' '0110'. USING 'BDC_CURSOR' 'KNA1-REGIO'. USING 'BDC_OKCODE' '/00'. USING 'KNA1-NAME1' RECORD-NAME1_003. USING 'KNA1-LAND1' RECORD-LAND1_004. USING 'KNA1-REGIO' RECORD-REGIO_005. USING 'KNA1-SPRAS' RECORD-SPRAS_006. USING 'SAPMF02D' '0120'. USING 'BDC_CURSOR' 'KNA1-LIFNR'. USING 'BDC_OKCODE' '/00'. USING 'SAPMF02D' '0125'. USING 'BDC_CURSOR' 'KNA1-NIELS'. USING 'BDC_OKCODE' '/00'. USING 'SAPMF02D' '0130'. USING 'BDC_CURSOR' 'KNBK-BANKS(01)'. USING 'BDC_OKCODE' '=ENTR'. USING 'SAPMF02D' '0340'. USING 'BDC_CURSOR' 'RF02D-KUNNR'. USING 'BDC_OKCODE' '=ENTR'. USING 'SAPMF02D' '0370'. USING 'BDC_CURSOR' 'RF02D-KUNNR'. USING 'BDC_OKCODE' '=ENTR'. USING 'KNA1-CIVVE' RECORD-CIVVE_007. USING 'SAPMF02D' '0360'. USING 'BDC_CURSOR' 'KNVK-NAMEV(01)'. USING 'BDC_OKCODE' '=ENTR'. USING 'SAPMF02D' '0210'. USING 'BDC_CURSOR' 'KNB1-AKONT'. USING 'BDC_OKCODE'

'/00'. USING 'KNB1-AKONT' RECORD-AKONT_008. PERFORM BDC_DYNPRO USING 'SAPMF02D' '0215'. PERFORM BDC_FIELD USING 'BDC_CURSOR' 'KNB1-ZTERM'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'. PERFORM BDC_DYNPRO USING 'SAPMF02D' '0220'. PERFORM BDC_FIELD USING 'BDC_CURSOR' 'KNB5-MAHNA'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'. PERFORM BDC_DYNPRO USING 'SAPMF02D' '0230'. PERFORM BDC_FIELD USING 'BDC_CURSOR' 'KNB1-VRSNR'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'. PERFORM BDC_DYNPRO USING 'SAPMF02D' '0610'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'. PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF02D-KUNNR'. PERFORM BDC_TRANSACTION USING 'XD01'. PERFORM BDC_FIELD PERFORM CLOSE_GROUP. ENDLOOP.

Excel sheet data: ( .xls file) 1000 ZMUM RAJ1 IN 20 1000 ZMUM RAJ2 IN 20

EN x EN x

16443100 16443100

Example 2: (call transaction to upload .txt file data) customer master creation:
report ZBDC_VAI no standard page heading line-size 255.

include bdcrecx1.
data: begin of record OCCURS 0, * data element: BUKRS BUKRS_001(004), * data element: KTOKD KTOKD_002(004), * data element: ANRED ANRED_003(015), * data element: NAME1_GP NAME1_004(035), * data element: LAND1_GP LAND1_005(003), * data element: SPRAS SPRAS_006(002),

* data element: CIVVE CIVVE_007(001), * data element: AKONT AKONT_008(010), end of record. *** End generated data section *** data: file1 TYPE string. PARAMETERS: file TYPE rlgrap-filename OBLIGATORY. AT SELECTION-SCREEN on VALUE-REQUEST FOR file. CALL FUNCTION 'F4_FILENAME' EXPORTING PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR FIELD_NAME = 'file' IMPORTING FILE_NAME = file . file1 = file. CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = file1 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 = record * 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. start-of-selection. loop at record. perform open_group. perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field using 'SAPMF02D' '0100'. using 'BDC_CURSOR' 'RF02D-KTOKD'. using 'BDC_OKCODE' '/00'. using 'RF02D-BUKRS' record-BUKRS_001. using 'RF02D-KTOKD' record-KTOKD_002. using 'SAPMF02D' '0110'. using 'BDC_CURSOR' 'KNA1-SPRAS'. using 'BDC_OKCODE' '/00'. using 'KNA1-ANRED' record-ANRED_003. using 'KNA1-NAME1' record-NAME1_004. using 'KNA1-LAND1' record-LAND1_005. using 'KNA1-SPRAS' record-SPRAS_006. using 'SAPMF02D' '0120'. using 'BDC_CURSOR' 'KNA1-LIFNR'. using 'BDC_OKCODE' '/00'. using 'SAPMF02D' '0125'. using 'BDC_CURSOR' 'KNA1-NIELS'. using 'BDC_OKCODE' '/00'. using 'SAPMF02D' '0130'. using 'BDC_CURSOR'

perform bdc_field perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform perform

'KNBK-BANKS(01)'. using 'BDC_OKCODE' '=ENTR'. bdc_dynpro using 'SAPMF02D' '0340'. bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'. bdc_field using 'BDC_OKCODE' '=ENTR'. bdc_dynpro using 'SAPMF02D' '0370'. bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'. bdc_field using 'BDC_OKCODE' '=ENTR'. bdc_field using 'KNA1-CIVVE' record-CIVVE_007. bdc_dynpro using 'SAPMF02D' '0360'. bdc_field using 'BDC_CURSOR' 'KNVK-NAMEV(01)'. bdc_field using 'BDC_OKCODE' '=ENTR'. bdc_dynpro using 'SAPMF02D' '0210'. bdc_field using 'BDC_CURSOR' 'KNB1-AKONT'. bdc_field using 'BDC_OKCODE' '/00'. bdc_field using 'KNB1-AKONT' record-AKONT_008. bdc_dynpro using 'SAPMF02D' '0215'. bdc_field using 'BDC_CURSOR' 'KNB1-ZTERM'. bdc_field using 'BDC_OKCODE' '/00'. bdc_dynpro using 'SAPMF02D' '0220'. bdc_field using 'BDC_CURSOR' 'KNB5-MAHNA'. bdc_field using 'BDC_OKCODE' '/00'. bdc_dynpro using 'SAPMF02D' '0230'. bdc_field using 'BDC_CURSOR' 'KNB1-VRSNR'. bdc_field using 'BDC_OKCODE' '/00'. bdc_dynpro using 'SAPMF02D' '0610'. bdc_field using 'BDC_OKCODE' '/00'. bdc_field using 'BDC_CURSOR' 'RF02D-KUNNR'. bdc_transaction using 'XD01'.

perform close_group. ENDLOOP.

Record: ( .txt file) 1000 ZMUM 1000 ZMUM mr mr RAJ1 IN EN x RAJ2 IN EN x 16443100 16443100

ALV POPUP DISPLAY REPO


*&---------------------------------------------------------------------* *& Report ZR_ALV_POPUP *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZR_ALV_POPUP. TABLES: VBAP. TYPE-POOLS: SLIS. DATA: BEGIN OF IT_VBAP OCCURS 10, VBELN TYPE VBAP-VBELN, POSNR TYPE VBAP-VBELN, END OF IT_VBAP. DATA: FC TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE. PARAMETERS: P_VBELN TYPE VBAP-VBELN. SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_VBAP WHERE VBELN = P_VBELN. PERFORM FIELDCAT. PERFORM DISPLAY. *&---------------------------------------------------------------------* *& Form fieldcat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM FIELDCAT. FC-FIELDNAME = 'VBELN'. FC-SELTEXT_L = 'salse doc no'. APPEND FC. CLEAR FC.

FC-FIELDNAME = 'POSNR'. FC-SELTEXT_L = 'salse doc ITEM'. APPEND FC. CLEAR FC. ENDFORM. "fieldcat

*&---------------------------------------------------------------------* *& Form DISPLAY *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM DISPLAY. CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT' EXPORTING * I_TITLE = * I_SELECTION = 'X' * I_ALLOW_NO_SELECTION = I_ZEBRA = 'X' * I_SCREEN_START_COLUMN =0 * I_SCREEN_START_LINE =0 * I_SCREEN_END_COLUMN =0 * I_SCREEN_END_LINE =0 * I_CHECKBOX_FIELDNAME = * I_LINEMARK_FIELDNAME = * I_SCROLL_TO_SEL_LINE = 'X' I_TABNAME = 'IT_VBAP' * I_STRUCTURE_NAME = IT_FIELDCAT = FC[] * IT_EXCLUDING = * I_CALLBACK_PROGRAM = * I_CALLBACK_USER_COMMAND = * IS_PRIVATE = * IMPORTING * ES_SELFIELD = * E_EXIT = TABLES T_OUTTAB = IT_VBAP * 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. "DISPLAY

RESULT:

ALV Interactive report 3 list


*&---------------------------------------------------------------------* *& Report ZR_ALV_INETR_PO *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZR_ALV_INETR_PO_3LIST. TABLES: EKKO, EKPO,LFA1. TYPE-POOLS: SLIS. TYPES: BEGIN OF ST_EKKO, EBELN TYPE EKKO-EBELN, BUKRS TYPE EKKO-BUKRS, BSTYP TYPE EKKO-BSTYP, BSART TYPE EKKO-BSART,

LIFNR TYPE EKKO-LIFNR, ERNAM TYPE EKKO-ERNAM, AEDAT TYPE EKKO-BEDAT, END OF ST_EKKO. TYPES: BEGIN OF ST_EKPO, EBELN TYPE EKPO-EBELN, EBELP TYPE EKPO-EBELP, MATNR TYPE EKPO-MATNR, MENGE TYPE EKPO-MENGE, NETPR TYPE EKPO-NETPR, END OF ST_EKPO. DATA: IT_EKKO TYPE TABLE OF ST_EKKO, IT_EKPO TYPE TABLE OF ST_EKPO, WA_EKKO TYPE ST_EKKO, WA_EKPO TYPE ST_EKPO. DATA: IT_FC1 TYPE SLIS_T_FIELDCAT_ALV, IT_FC2 TYPE SLIS_T_FIELDCAT_ALV, WA_FC1 TYPE SLIS_FIELDCAT_ALV, WA_FC2 TYPE SLIS_FIELDCAT_ALV. DATA: IT_LH1 TYPE SLIS_T_LISTHEADER, IT_LH2 TYPE SLIS_T_LISTHEADER, WA_LH1 TYPE SLIS_LISTHEADER, WA_LH2 TYPE SLIS_LISTHEADER, LINE TYPE I, LINE1(10) TYPE C, T_LINE LIKE WA_LH1-INFO. SELECT-OPTIONS: S_EBELN FOR EKPO-EBELN. PERFORM GETDATA1. PERFORM FIELDCAT1. PERFORM DISPLAY1. FORM GETDATA1. SELECT EBELN EBELP MATNR MENGE NETPR FROM EKPO INTO TABLE IT_EKPO WHERE EBELN IN S_EBELN. ENDFORM. FORM FIELDCAT1. CLEAR: WA_FC1. WA_FC1-TABNAME = 'IT_EKPO'. WA_FC1-FIELDNAME = 'EBELN'. WA_FC1-SELTEXT_S = 'PO DOC NO'. WA_FC1-COL_POS = 1. APPEND WA_FC1 TO IT_FC1. CLEAR: WA_FC1. WA_FC1-TABNAME = 'IT_EKPO'.

WA_FC1-FIELDNAME = 'EBELP'. WA_FC1-SELTEXT_S = 'PO DOC ITEM'. WA_FC1-COL_POS = 2. APPEND WA_FC1 TO IT_FC1. CLEAR: WA_FC1. WA_FC1-TABNAME = 'IT_EKPO'. WA_FC1-FIELDNAME = 'MATNR'. WA_FC1-SELTEXT_S = 'MATERIAL NO'. WA_FC1-COL_POS = 3. APPEND WA_FC1 TO IT_FC1. CLEAR: WA_FC1. WA_FC1-TABNAME = 'IT_EKPO'. WA_FC1-FIELDNAME = 'MENGE'. WA_FC1-SELTEXT_S = 'QUANTITY'. WA_FC1-COL_POS = 4. APPEND WA_FC1 TO IT_FC1. CLEAR: WA_FC1. WA_FC1-TABNAME = 'IT_EKPO'. WA_FC1-FIELDNAME = 'NETPR'. WA_FC1-SELTEXT_S = 'NET PRICE'. WA_FC1-COL_POS = 5. APPEND WA_FC1 TO IT_FC1. ENDFORM. FORM TOP_OF_PAGE1. CLEAR WA_LH1. WA_LH1-TYP = 'H'. WA_LH1-INFO = 'PURCHASE ORDER ITEM DATA'. APPEND WA_LH1 TO IT_LH1. CLEAR WA_LH1. WA_LH1-TYP = 'S'. WA_LH1-KEY = 'DATE:'. CONCATENATE SY-DATUM+6(2) SY-DATUM+4(2) SY-DATUM(4) INTO WA_LH1INFO SEPARATED BY '/'. APPEND WA_LH1 TO IT_LH1. CLEAR WA_LH1. DESCRIBE TABLE IT_EKPO LINES LINE. LINE1 = LINE. CONCATENATE 'TOTAL NO OF RECORD SELECTED' LINE1 INTO T_LINE SEPARATED BY SP ACE. WA_LH1-TYP = 'A'. WA_LH1-INFO = T_LINE. APPEND WA_LH1 TO IT_LH1. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING

IT_LIST_COMMENTARY REFRESH IT_LH1. CLEAR: WA_LH1. ENDFORM.

= IT_LH1.

FORM DISPLAY1. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = SY-REPID I_CALLBACK_USER_COMMAND = 'USER_COMMAND' I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE1' I_BACKGROUND_ID = 'ALV_BACKGROUND' IT_FIELDCAT = IT_FC1 TABLES T_OUTTAB = IT_EKPO . ENDFORM. form USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELF TYPE SLIS_SELFIELD. CASE R_UCOMM. WHEN '&IC1'. READ TABLE IT_EKPO INTO WA_EKPO INDEX RS_SELF-TABINDEX. PERFORM FIELDCAT2. PERFORM GETDATA2. PERFORM DISPLAY2. ENDCASE. ENDFORM. FORM GETDATA2. SELECT EBELN BUKRS BSTYP BSART ERNAM AEDAT FROM EKKO INTO CORRESPONDING FIELDS OF TABLE IT_EKKO WHERE EBELN = WA_EKPO-EBELN. ENDFORM. FORM FIELDCAT2. CLEAR: WA_FC2. WA_FC2-TABNAME = 'IT_EKKO'. WA_FC2-FIELDNAME = 'EBELN'. WA_FC2-SELTEXT_S = 'PO DOC NO'. WA_FC2-COL_POS = 1. APPEND WA_FC2 TO IT_FC2. CLEAR: WA_FC2. WA_FC2-TABNAME = 'IT_EKKO'. WA_FC2-FIELDNAME = 'BUKRS'. WA_FC2-SELTEXT_S = 'COMPANY CODE'. WA_FC2-COL_POS = 2. APPEND WA_FC2 TO IT_FC2. CLEAR: WA_FC2. WA_FC2-TABNAME = 'IT_EKKO'. WA_FC2-FIELDNAME = 'BUTYP'. WA_FC2-SELTEXT_S = 'PO DOC CAT'. WA_FC2-COL_POS = 3.

APPEND WA_FC2 TO IT_FC2. CLEAR: WA_FC2. WA_FC2-TABNAME = 'IT_EKKO'. WA_FC2-FIELDNAME = 'BSART'. WA_FC2-SELTEXT_S = 'PO DOC TYPE'. WA_FC2-COL_POS = 4. APPEND WA_FC2 TO IT_FC2. CLEAR: WA_FC2. ENDFORM. FORM DISPLAY2. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = SY-REPID I_CALLBACK_USER_COMMAND = 'USER_COMMAND2' I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE2' IT_FIELDCAT = IT_FC2 TABLES T_OUTTAB = IT_EKKO. CLEAR: WA_FC2. REFRESH IT_FC2. ENDFORM. FORM TOP_OF_PAGE2. CLEAR WA_LH1. WA_LH1-TYP = 'H'. WA_LH1-INFO = 'PURCHASE ORDER HEADER DATA'. APPEND WA_LH1 TO IT_LH1. CLEAR WA_LH1. WA_LH1-TYP = 'S'. WA_LH1-KEY = 'DATE:'. CONCATENATE SY-DATUM+6(2) SY-DATUM+4(2) SY-DATUM(4) INTO WA_LH1INFO SEPARATED BY '/'. APPEND WA_LH1 TO IT_LH1. CLEAR: WA_LH1,LINE,LINE1,T_LINE. DESCRIBE TABLE IT_EKKO LINES LINE. LINE1 = LINE. CONCATENATE 'TOTAL NO OF RECORD SELECTED' LINE1 INTO T_LINE SEPARATED BY SP ACE. WA_LH1-TYP = 'A'. WA_LH1-INFO = T_LINE. APPEND WA_LH1 TO IT_LH1. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = IT_LH1.

REFRESH IT_LH1. CLEAR: WA_LH1. ENDFORM. FORM USER_COMMAND2 USING R_UCOMM2 LIKE SYUCOMM RS_SELF2 TYPE SLIS_SELFIELD. READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELF2-TABINDEX. PERFORM FIELDCAT3. PERFORM DISPLAY3. ENDFORM. FORM FIELDCAT3. CLEAR: WA_FC2,IT_FC2. WA_FC2-TABNAME = 'IT_EKKO'. WA_FC2-FIELDNAME = 'ERNAM'. WA_FC2-SELTEXT_S = 'ENTER BY NAME'. WA_FC2-COL_POS = 1. APPEND WA_FC2 TO IT_FC2. CLEAR: WA_FC2. WA_FC2-TABNAME = 'IT_EKKO'. WA_FC2-FIELDNAME = 'AEDAT'. WA_FC2-SELTEXT_S = 'CREATED DATE'. WA_FC2-COL_POS = 2. APPEND WA_FC2 TO IT_FC2. ENDFORM. FORM DISPLAY3. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_GRID_TITLE = 'VENDER DETAILS' IT_FIELDCAT = IT_FC2 TABLES T_OUTTAB = IT_EKKO . CLEAR: WA_FC2. REFRESH IT_FC2. ENDFORM. RESULT:

Basic list

Secondary list 1

Secondary list 2

Anda mungkin juga menyukai