Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

bdc tutorials

Former Member
0 Likes
681

hi,

i am new to bdc and i want to create a bdc for inspection plan.can anybody provide me simple and clear tutorials about it.

as help will be definately rewarded.

3 REPLIES 3
Read only

Former Member
0 Likes
605

Hi,

Please refer to the link below:

http://www.sap-img.com/abap/learning-bdc-programming.htm

Thanks,

Sriram Ponna.

Read only

Former Member
0 Likes
605

Check this bdc for inspection plan:



REPORT ZQMB_QP01_INSP_PLAN
NO STANDARD PAGE HEADING LINE-SIZE 255 MESSAGE-ID ZQMB_INSP_PLAN.

----------------------------------------------------------------------

Description: Upload Program for Create Inspection Plan * 
----------------------------------------------------------------------

ABAP Name : ZQMB_QP01_INSP_PLAN * 
Autor : Vanessa Noronha * 
Type : BDC Program for QP01 Transaction. * 
Module : QM * 
Date : 17 January 2008 * 
Transport : D01K948244 -- TR-BDC for QP01 * 
----------------------------------------------------------------------

Changes (internal Version: Documentation/Info on line level) * 
----------------------------------------------------------------------

Date Name internal Transp.No. Description * 
-Version- * 
----------------------------------------------------------------------

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


D A T A D E C L A R A T I O N * 
************************************************************************

TYPES: BEGIN OF TY_TABDATA,
MATNR TYPE RC27M-MATNR, "Material No
WERKS TYPE RC27M-WERKS, "Plant
PLNNR TYPE RC271-PLNNR, "Key for Task List Group
KTEXT TYPE PLKOD-KTEXT, "Task list description
VERWE TYPE PLKOD-VERWE, "Task list usage
STATU TYPE PLKOD-STATU, "Status
SLWBEZ TYPE PLKOD-SLWBEZ, "Identification for the Inspection Point Field Combination
QPRZIEHVER TYPE PLKOD-QPRZIEHVER, "Sample-Drawing Procedure
END OF TY_TABDATA.

TYPES: BEGIN OF TY_TBCTRL1,
MATNR TYPE RC27M-MATNR, "Material No
WERKS TYPE RC27M-WERKS, "Plant
PLNNR TYPE RC271-PLNNR, "Key for Task List Group
ARBPL TYPE PLPOD-ARBPL, "Work center
STEUS TYPE PLPOD-STEUS, "Control key
LTXA1 TYPE PLPOD-LTXA1, "Operation short text
END OF TY_TBCTRL1.

TYPES: BEGIN OF TY_TBCTRL2,
MATNR TYPE RC27M-MATNR, "Material No
WERKS TYPE RC27M-WERKS, "Plant
PLNNR TYPE RC271-PLNNR, "Key for Task List Group

ARBPL TYPE PLPOD-ARBPL, "Work center 
STEUS TYPE PLPOD-STEUS, "Control key 
VERWMERKM TYPE PLMKB-VERWMERKM, "Master Inspection Characteristics
PMETHODE TYPE PLMKB-PMETHODE, "Inspection Method

PMTVERSION TYPE PLMKB-PMTVERSION, "Version Number of the Inspection Method 
STICHPRVER TYPE PLMKB-STICHPRVER, "Sampling Procedure in Inspection Characteristic

PRUEFEINH(7)," TYPE PLMKB-PRUEFEINH, 
PROBEMGEH(3)," TYPE PLMKB-PROBEMGEH, 
STELLEN(3), "TYPE PLMKB-STELLEN, "Number of Places to the Right of a Decimal Point (Accuracy)
MASSEINHSW TYPE RQPAS-MASSEINHSW, "Measurement Unit in Which Quantitative Data Is Maintained
SOLLWERT TYPE QFLTP-SOLLWERT, "Target Value for a Quantitative Characteristic
TOLERANZUN TYPE QFLTP-TOLERANZUN, "Lower Specification Limit
TOLERANZOB TYPE QFLTP-TOLERANZOB, "Upper Specification Limit
END OF TY_TBCTRL2.

TYPES: BEGIN OF TY_CHECK,
MATNR TYPE RC27M-MATNR, "Material No
WERKS TYPE RC27M-WERKS, "Plant
PLNNR TYPE RC271-PLNNR, "Key for Task List Group
END OF TY_CHECK.

*-----------------------------------------------------------------------


Declaration of the Internal Table & Work Area. 
*------------------------------------------------------------------------

DATA: ITST_TABDATA TYPE SORTED TABLE OF TY_TABDATA WITH
UNIQUE KEY MATNR WERKS PLNNR,
" Internal table for Non-Table Control Records
WA_TABDATA TYPE TY_TABDATA,
ITST_TABCTRL1 TYPE TABLE OF TY_TBCTRL1 , " Internal table for the First Screen with Table Control
WA_TABCTRL1 TYPE TY_TBCTRL1,
ITST_TABCTRL2 TYPE TABLE OF TY_TBCTRL2, " Internal table for the Second Screen with Table Control
WA_TABCTRL2 TYPE TY_TBCTRL2,
ITST_CHECK TYPE TABLE OF TY_CHECK, " Internal table to check if record already exists
WA_CHECK TYPE TY_CHECK.



*---------------------------------------------------------------------


Constants 
*---------------------------------------------------------------------

CONSTANTS: C_QP01 TYPE CHAR4 VALUE 'QP01', " Transaction Name
C_A TYPE CHAR1 VALUE 'E', " Mode
C_S TYPE CHAR1 VALUE 'S'. " Status
*--------------------------------------------------------------------------

Global data Declaration 
*---------------------------------------------------------------------------

DATA: GV_YEAR(4) TYPE C, " Year part for Date
GV_MNTH(2) TYPE C, " Month part for Date
GV_DATE(2) TYPE C, " Day part for Date
GV_DATUM(10) TYPE C, " Concatenated Date in dd.mm.yyyy Format
GV_ANS TYPE C, " Answer to Continue
GV_FLAG_NEW(1) TYPE N VALUE 0. " Flag to set if Inspection Plan exists.

*-------------------------------------------------------------------------------------

Declaration of the Internal Table with Header Line comprising of the uploaded data. 
*-------------------------------------------------------------------------------------

DATA: BEGIN OF IT_FILE_UPLOAD OCCURS 0.
INCLUDE STRUCTURE ALSMEX_TABLINE. " Rows for Table with Excel Data
DATA: END OF IT_FILE_UPLOAD.

*--------------------------------------------

Batch Input Data for a single Transaction. 
Message of Call Transaction. 
*--------------------------------------------
DATA: ITST_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE, " BDC Table
ITST_MSGTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. " BDC Messages

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

S E L E C T I O N - S C R E E N * 
************************************************************************

SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001,
BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-004.
PARAMETERS: P_FNAME LIKE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK B2,
END OF BLOCK B1.

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

E V E N T : 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
STATIC = 'X'
CHANGING
FILE_NAME = P_FNAME.

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


E V E N T : S T A R T - O F - S E L E C T I O N * 
************************************************************************

START-OF-SELECTION.

*
--------------------------------------------------------------------------------
 
Upload Excel file into Internal Table. 
*
--------------------------------------------------------------------------------
 
PERFORM UPLOAD_EXCEL_FILE. " To Upload the Excel File

IF NOT IT_FILE_UPLOAD IS INITIAL.

*
--------------------------------------------------------------------------------
 
Confirm whether you want to proceed with the Upload. 
*
--------------------------------------------------------------------------------
 
PERFORM CONFIRM_UPLOAD.
IF GV_ANS EQ '1'.

*
--------------------------------------------------------------------------------
 
Organize the uploaded data into another Internal Table. 
*
--------------------------------------------------------------------------------
 
PERFORM ORGANIZE_UPLOADED_DATA.


Validate if already some Inspection Plan exists for that Material Plant 

IF ITST_TABDATA[] IS NOT INITIAL.
SELECT MATNR
WERKS
PLNNR
FROM MAPL
INTO TABLE ITST_CHECK
FOR ALL ENTRIES IN ITST_TABDATA
WHERE MATNR = ITST_TABDATA-MATNR AND WERKS = ITST_TABDATA-WERKS AND
PLNNR = ITST_TABDATA-PLNNR AND PLNTY = 'Q' AND LOEKZ 'X'.
ENDIF.

LOOP AT ITST_CHECK INTO WA_CHECK .
LOOP AT ITST_TABDATA INTO WA_TABDATA WHERE MATNR = WA_CHECK-MATNR
AND WERKS = WA_CHECK-WERKS AND PLNNR = WA_CHECK-PLNNR.
IF SY-SUBRC = 0. " If exists SET FLAG = 1.

GV_FLAG_NEW = 1. 
DELETE ITST_TABDATA WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
AND PLNNR = WA_CHECK-PLNNR.

DELETE ITST_TABCTRL1 WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
AND PLNNR = WA_CHECK-PLNNR.

DELETE ITST_TABCTRL2 WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
AND PLNNR = WA_CHECK-PLNNR.

ENDIF.
ENDLOOP.
ENDLOOP.

*
--------------------------------------------------------------------------------
 
Kick-start BDC Operation 
*
--------------------------------------------------------------------------------
 
PERFORM F_START_BDC. " If answer is YES, then start BDC Operations

ENDIF.
ELSE.
LEAVE PROGRAM. " If answer is NO or CANCEL then leave program
ENDIF.


&---------------------------------------------------------------------
*& Form F_START_BDC
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------

FORM F_START_BDC .

DATA : LV_FNAM(20) TYPE C, " Concatenated field name
LV_IDX1(3) TYPE N VALUE 1, " Index For Table Control 1
LV_IDX2(3) TYPE N VALUE 1, " Index For Table Control 2
LV_GOTO(4) TYPE N , " Index for GoTo Line No incase of Page Down
LV_PG(3) TYPE N VALUE 1. " Index for Page No

IF ITST_TABDATA[] IS INITIAL.
MESSAGE E000. " If Inspection Plan exists for all items in file, show error message
ENDIF.

LOOP AT ITST_TABDATA INTO WA_TABDATA.

LV_IDX2 = '1'.
CLEAR ITST_BDCDATA.
REFRESH ITST_BDCDATA.

GV_YEAR = SY-DATUM+0(4).
GV_MNTH = SY-DATUM+4(2).
GV_DATE = SY-DATUM+6(2).
CONCATENATE GV_DATE '.' GV_MNTH '.' GV_YEAR INTO GV_DATUM.


PERFORM BDC_DYNPRO USING 'SAPLCPDI' '8010'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RC27M-MATNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RC27M-MATNR'
WA_TABDATA-MATNR. " 'kiz0006c'
PERFORM BDC_FIELD USING 'RC27M-WERKS'
WA_TABDATA-WERKS. " 'B001'
PERFORM BDC_FIELD USING 'RC271-PLNNR'
WA_TABDATA-PLNNR. " 60000000-99999999
PERFORM BDC_FIELD USING 'RC271-STTAG'
GV_DATUM. " '16.01.2008'



IF GV_FLAG_NEW = 1. " If Exists then diff screen for clicking NEW ENTRIES tab 
*

PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1200'. 
PERFORM BDC_FIELD USING 'BDC_CURSOR' 
'RC27X-ENTRY_ACT'. 
PERFORM BDC_FIELD USING 'BDC_OKCODE' 
'=ANLG'. 
PERFORM BDC_FIELD USING 'RC27X-ENTRY_ACT' 
'1'. 
PERFORM BDC_DYNPRO USING 'SAPLCPDA' '1200'. 
PERFORM BDC_FIELD USING 'BDC_OKCODE' 
'/00'. 
ELSE. 

PERFORM BDC_DYNPRO USING 'SAPLCPDA' '1200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.

ENDIF. 

IF WA_TABDATA-KTEXT SPACE.
PERFORM BDC_FIELD USING 'PLKOD-KTEXT'
WA_TABDATA-KTEXT. " 'ZOLMITRIPTAN STAGE C1111'
ENDIF.
PERFORM BDC_FIELD USING 'PLKOD-VERWE'
WA_TABDATA-VERWE. " '5'
PERFORM BDC_FIELD USING 'PLKOD-STATU'
WA_TABDATA-STATU. " '4'
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLKOD-QPRZIEHVER'.
PERFORM BDC_FIELD USING 'PLKOD-SLWBEZ'
WA_TABDATA-SLWBEZ. " '200'
PERFORM BDC_FIELD USING 'PLKOD-QPRZIEHVER'
WA_TABDATA-QPRZIEHVER. " 'ACTIVE'
PERFORM BDC_DYNPRO USING 'SAPLCPDA' '1200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VOUE'.


LOOP AT ITST_TABCTRL1 INTO WA_TABCTRL1 WHERE MATNR = WA_TABDATA-MATNR
AND WERKS = WA_TABDATA-WERKS
AND PLNNR = WA_TABDATA-PLNNR.
ON CHANGE OF WA_TABCTRL1-MATNR OR WA_TABCTRL1-WERKS OR WA_TABCTRL1-PLNNR.

PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1400'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLPOD-LTXA1(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.

CONCATENATE 'PLPOD-ARBPL(' LV_IDX1 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL1-ARBPL. " 'qc01'
CONCATENATE 'PLPOD-STEUS(' LV_IDX1 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL1-STEUS. " 'qm01'
CONCATENATE 'PLPOD-LTXA1(' LV_IDX1 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL1-LTXA1. " 'opearation1'

PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1400'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLPOD-VORNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=QMUE'.
PERFORM BDC_FIELD USING 'RC27X-ENTRY_ACT'
'1'.
PERFORM BDC_FIELD USING 'RC27X-FLG_SEL(01)'
'X'.

PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLMKB-STELLEN(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.

LOOP AT ITST_TABCTRL2 INTO WA_TABCTRL2 WHERE MATNR = WA_TABCTRL1-MATNR AND
WERKS = WA_TABCTRL1-WERKS AND
PLNNR = WA_TABCTRL1-PLNNR.


AND ARBPL = WA_TABCTRL1-ARBPL AND 
STEUS = WA_TABCTRL1-STEUS. 

LV_GOTO = LV_PG * 140. " For Page Down on Second Table Control

IF LV_IDX2 >= 14.
PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RQPAS-AB_MKNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RQPAS-AB_MKNR'
LV_GOTO .

LV_IDX2 = 2.
LV_PG = LV_PG + 1.
PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.

ELSE.
PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLMKB-STELLEN(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
ENDIF.

CONCATENATE 'PLMKB-VERWMERKM(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-VERWMERKM. " 'MIC00001'/ ' MIC00050'
IF WA_TABCTRL2-PMETHODE SPACE.
CONCATENATE 'PLMKB-PMETHODE(' LV_IDX2')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-PMETHODE. " 'met00001'

CONCATENATE 'PLMKB-PMTVERSION(' LV_IDX2 ')' INTO LV_FNAM. 
PERFORM BDC_FIELD USING LV_FNAM 
WA_TABCTRL2-PMTVERSION. " '1' 
CONCATENATE 'PLMKB-STICHPRVER(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-STICHPRVER. " 'APIFX1'

CONCATENATE 'PLMKB-PRUEFEINH(' LV_IDX2 ')' INTO LV_FNAM. 
PERFORM BDC_FIELD USING LV_FNAM 
WA_TABCTRL2-PRUEFEINH. " '20' 
CONCATENATE 'PLMKB-PROBEMGEH(' LV_IDX2 ')' INTO LV_FNAM. 
PERFORM BDC_FIELD USING LV_FNAM 
WA_TABCTRL2-PROBEMGEH. " 'G' 
CONCATENATE 'PLMKB-STELLEN(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-STELLEN. " '2'
CONCATENATE 'RQPAS-MASSEINHSW(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-MASSEINHSW. " '%'
CONCATENATE 'QFLTP-SOLLWERT(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-SOLLWERT. " '10'
CONCATENATE 'QFLTP-TOLERANZUN(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-TOLERANZUN. " '5'
CONCATENATE 'QFLTP-TOLERANZOB(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-TOLERANZOB. " '15'

PERFORM BDC_DYNPRO USING 'SAPLQPAA' '1501'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENT1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLMKB-VERWMERKM'.
PERFORM BDC_DYNPRO USING 'SAPLQPAA' '1502'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENT1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLMKB-PMETHODE'.
PERFORM BDC_DYNPRO USING 'SAPLQPAA' '1502'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENT1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLMKB-PMETHODE'.
ELSE.


CONCATENATE 'PLMKB-PMTVERSION(' LV_IDX2 ')' INTO LV_FNAM. 
PERFORM BDC_FIELD USING LV_FNAM 
WA_TABCTRL2-PMTVERSION. " '1' 
CONCATENATE 'PLMKB-STICHPRVER(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-STICHPRVER. " 'APIFX1'

CONCATENATE 'PLMKB-PRUEFEINH(' LV_IDX2 ')' INTO LV_FNAM. 
PERFORM BDC_FIELD USING LV_FNAM 
WA_TABCTRL2-PRUEFEINH. " '20' 
CONCATENATE 'PLMKB-PROBEMGEH(' LV_IDX2 ')' INTO LV_FNAM. 
PERFORM BDC_FIELD USING LV_FNAM 
WA_TABCTRL2-PROBEMGEH. " 'G' 

CONCATENATE 'PLMKB-STELLEN(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-STELLEN. " '2'
CONCATENATE 'RQPAS-MASSEINHSW(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-MASSEINHSW. " '%'
CONCATENATE 'QFLTP-SOLLWERT(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-SOLLWERT. " '10'
CONCATENATE 'QFLTP-TOLERANZUN(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-TOLERANZUN. " '5'
CONCATENATE 'QFLTP-TOLERANZOB(' LV_IDX2 ')' INTO LV_FNAM.
PERFORM BDC_FIELD USING LV_FNAM
WA_TABCTRL2-TOLERANZOB. " '15'
PERFORM BDC_DYNPRO USING 'SAPLQPAA' '1501'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENT1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PLMKB-QMTB_WERKS'.
PERFORM BDC_FIELD USING 'PLMKB-VERWMERKM'
WA_TABCTRL2-VERWMERKM.
PERFORM BDC_FIELD USING 'PLMKB-QPMK_WERKS'
WA_TABCTRL2-WERKS.
PERFORM BDC_FIELD USING 'PLMKB-QMTB_WERKS'
''.

ENDIF.
LV_IDX2 = LV_IDX2 + 1.
ENDLOOP.

ENDON.
ENDLOOP.



PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RQPAS-ENTRY_ACT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=QMBU'.
PERFORM BDC_FIELD USING 'RQPAS-ENTRY_ACT'
'1'.

CALL TRANSACTION C_QP01 USING ITST_BDCDATA
MODE C_A UPDATE C_S
MESSAGES INTO ITST_MSGTAB. "#EC CI_CALLTA

ENDLOOP.
ENDFORM. " F_START_BDC

&---------------------------------------------------------------------
*& Form UPLOAD_EXCEL_FILE
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------

FORM UPLOAD_EXCEL_FILE .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FNAME
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 19
I_END_ROW = 9999
TABLES
INTERN = IT_FILE_UPLOAD.


ENDFORM. " UPLOAD_EXCEL_FILE

&---------------------------------------------------------------------
*& Form CONFIRM_UPLOAD
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------

FORM CONFIRM_UPLOAD .


CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = TEXT-002
TEXT_QUESTION = TEXT-003
IMPORTING
ANSWER = GV_ANS
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.


ENDFORM. " CONFIRM_UPLOAD

&---------------------------------------------------------------------
*& Form BDC_DYNPRO
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

-->P_0589 text 
-->P_0590 text 
----------------------------------------------------------------------
FORM BDC_DYNPRO USING PROGRAM
DYNPRO.

CLEAR: ITST_BDCDATA.
ITST_BDCDATA-PROGRAM = PROGRAM.
ITST_BDCDATA-DYNPRO = DYNPRO.
ITST_BDCDATA-DYNBEGIN = 'X'.
APPEND ITST_BDCDATA.

ENDFORM. " BDC_DYNPRO

&---------------------------------------------------------------------
*& Form BDC_FIELD
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

-->P_0729 text 
-->P_0730 text 
----------------------------------------------------------------------

FORM BDC_FIELD USING FNAM
FVAL.

CLEAR: ITST_BDCDATA.
ITST_BDCDATA-FNAM = FNAM.
ITST_BDCDATA-FVAL = FVAL.
APPEND ITST_BDCDATA.

ENDFORM. " BDC_FIELD

&---------------------------------------------------------------------
*& Form ORGANIZE_UPLOADED_DATA
&---------------------------------------------------------------------


text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------

FORM ORGANIZE_UPLOADED_DATA .

DATA : LV_TOTROW TYPE I, " Total Records
LV_ROW TYPE I. " Row No

LV_TOTROW = 1.
SORT IT_FILE_UPLOAD BY ROW
COL.

LOOP AT IT_FILE_UPLOAD.
LV_TOTROW = IT_FILE_UPLOAD-ROW. " To find total rows
ENDLOOP.

LV_ROW = 1.
WHILE LV_ROW <= LV_TOTROW.
LOOP AT IT_FILE_UPLOAD WHERE ROW = LV_ROW.
CASE IT_FILE_UPLOAD-COL.
WHEN '0001'. " Material
TRANSLATE IT_FILE_UPLOAD-VALUE TO UPPER CASE.
WA_TABDATA-MATNR = IT_FILE_UPLOAD-VALUE.
WA_TABCTRL1-MATNR = IT_FILE_UPLOAD-VALUE.
WA_TABCTRL2-MATNR = IT_FILE_UPLOAD-VALUE.
WHEN '0002'. " Plant
TRANSLATE IT_FILE_UPLOAD-VALUE TO UPPER CASE.
WA_TABDATA-WERKS = IT_FILE_UPLOAD-VALUE.
WA_TABCTRL1-WERKS = IT_FILE_UPLOAD-VALUE.
WA_TABCTRL2-WERKS = IT_FILE_UPLOAD-VALUE.
WHEN '0003'. " Group Key
WA_TABDATA-PLNNR = IT_FILE_UPLOAD-VALUE.
WA_TABCTRL1-PLNNR = IT_FILE_UPLOAD-VALUE.
WA_TABCTRL2-PLNNR = IT_FILE_UPLOAD-VALUE.
WHEN '0004'. " Group Counter Desc
WA_TABDATA-KTEXT = IT_FILE_UPLOAD-VALUE.
WHEN '0005'. " Usage
WA_TABDATA-VERWE = IT_FILE_UPLOAD-VALUE.
WHEN '0006'. " Status
WA_TABDATA-STATU = IT_FILE_UPLOAD-VALUE.
WHEN '0007'. " Inspection Point
WA_TABDATA-SLWBEZ = IT_FILE_UPLOAD-VALUE.
WHEN '0008'. " Sample Drawing Procedure
WA_TABDATA-QPRZIEHVER = IT_FILE_UPLOAD-VALUE.
WHEN '0009'. " Work Centre
WA_TABCTRL1-ARBPL = IT_FILE_UPLOAD-VALUE.

WA_TABCTRL2-ARBPL = IT_FILE_UPLOAD-VALUE. 
WHEN '0010'. " Control Key
WA_TABCTRL1-STEUS = IT_FILE_UPLOAD-VALUE.

WA_TABCTRL2-STEUS = IT_FILE_UPLOAD-VALUE. 
WHEN '0011'. " Desc
WA_TABCTRL1-LTXA1 = IT_FILE_UPLOAD-VALUE.
WHEN '0012'. " MIC
WA_TABCTRL2-VERWMERKM = IT_FILE_UPLOAD-VALUE.
WHEN '0013'. " Method
WA_TABCTRL2-PMETHODE = IT_FILE_UPLOAD-VALUE.

WHEN '0014'. 
WA_TABCTRL2-PMTVERSION = IT_FILE_UPLOAD-VALUE. 
WHEN '0014'. " Sampling
WA_TABCTRL2-STICHPRVER = IT_FILE_UPLOAD-VALUE.

WHEN '0016'. 
WA_TABCTRL2-PRUEFEINH = IT_FILE_UPLOAD-VALUE. 
WHEN '0017'. 
WA_TABCTRL2-PROBEMGEH = IT_FILE_UPLOAD-VALUE. 
WHEN '0015'. " Accuracy
WA_TABCTRL2-STELLEN = IT_FILE_UPLOAD-VALUE.
WHEN '0016'. " Unit
WA_TABCTRL2-MASSEINHSW = IT_FILE_UPLOAD-VALUE.
WHEN '0017'. " Target Value
WA_TABCTRL2-SOLLWERT = IT_FILE_UPLOAD-VALUE.
WHEN '0018'. " Lower Limit
WA_TABCTRL2-TOLERANZUN = IT_FILE_UPLOAD-VALUE.
WHEN '0019'. " Upper Limit
WA_TABCTRL2-TOLERANZOB = IT_FILE_UPLOAD-VALUE.
ENDCASE.
ENDLOOP.

LV_ROW = LV_ROW + 1.
INSERT WA_TABDATA INTO TABLE ITST_TABDATA .
APPEND WA_TABCTRL1 TO ITST_TABCTRL1.
APPEND WA_TABCTRL2 TO ITST_TABCTRL2.
CLEAR :WA_TABDATA,WA_TABCTRL1,WA_TABCTRL2.
ENDWHILE.

ENDFORM. " ORGANIZE_UPLOADED_DATA

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


E N D - O F - S E L E C T I O N * 
*********************************************************************************
END-OF-SELECTION.


Free all internal tables 
FREE: ITST_TABDATA,
ITST_TABCTRL1,
ITST_TABCTRL2. 

Read only

Former Member
0 Likes
605

Hi

Here I am giving you sample code. You can use this for reference when you r doing ur code.

For detailed tutorial, you can go thru the link which is given,

Code:

REPORT z50871mm_bdcp_assignment3 NO STANDARD PAGE HEADING

LINE-SIZE 255.

----


  • STRUCTURE DECLARATION

----


TYPES : BEGIN OF st_vendor,

ktokk TYPE rf02k-ktokk, "account group

anred TYPE lfa1-anred, "title

name1 TYPE lfa1-name1, "vendor name

sortl TYPE lfa1-sortl, "search term

pstlz TYPE lfa1-pstlz, "postal code

land1 TYPE lfa1-land1, "country

banks TYPE lfbk-banks,

bankl TYPE lfbk-bankl, "bank key

bankn TYPE lfbk-bankn, "account number

END OF st_vendor.

TYPES : BEGIN OF st_success,

lifnr TYPE lfa1-lifnr, "vendor number

name TYPE lfa1-name1, "vendor name

END OF st_success.

TYPES: BEGIN OF st_error,

linno TYPE i, "line number

message TYPE string, "error message

END OF st_error.

----


  • INTERNAL TABLE DECLARATIONS

  • WORK AREA DECLARATIONS

----


DATA : it_vendor TYPE STANDARD TABLE OF st_vendor,

wa_vendor TYPE st_vendor,

it_success TYPE STANDARD TABLE OF st_success,

wa_success TYPE st_success,

it_error TYPE STANDARD TABLE OF st_error,

wa_error TYPE st_error,

it_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,

it_message LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

----


  • DATA DECLARATION

----


DATA : v_file TYPE string,

v_tcode(4) VALUE 'XK01',

v_index LIKE sy-tabix,

v_totalrec TYPE i,

v_errrec TYPE i,

v_succrec TYPE i.

----


  • SELECTION SCREEN

----


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: p_file TYPE rlgrap-filename.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-010.

PARAMETERS p_mode LIKE ctu_params-dismode DEFAULT 'N' .

"A: show all dynpros

"E: show dynpro on error only

"N: do not display dynpro

PARAMETERS p_update LIKE ctu_params-updmode DEFAULT 'S'.

"S: synchronously

"A: asynchronously

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-011.

PARAMETERS : p_group(12) DEFAULT '50871'. "group name for error session

SELECTION-SCREEN END OF BLOCK b3.

----


  • AT SELECTION SCREEN ON VALUE-REQUEST

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

field_name = ' '

IMPORTING

file_name = p_file.

----


  • START-OF-SELECTION

----


START-OF-SELECTION.

v_file = p_file.

*gui upload

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = v_file

filetype = 'ASC'

has_field_separator = 'X'

TABLES

data_tab = it_vendor

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.

*loadind data into it_bdcdata

LOOP AT it_vendor INTO wa_vendor.

v_index = sy-tabix.

PERFORM load_bdcdata.

----


  • CALL TRANSACTION

----


CALL TRANSACTION v_tcode USING it_bdcdata

MODE p_mode

UPDATE p_update

MESSAGES INTO it_message.

*reading success

IF sy-subrc = 0.

READ TABLE it_message WITH KEY msgtyp = 'S'.

IF sy-subrc = 0.

wa_success-lifnr = it_message-msgv1.

wa_success-name = wa_vendor-name1.

APPEND wa_success TO it_success.

ENDIF.

ELSE.

*reading errors

READ TABLE it_message WITH KEY msgtyp = 'E'.

IF sy-subrc = 0.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = sy-msgid

no = it_message-msgnr

v1 = it_message-msgv1

v2 = it_message-msgv2

v3 = it_message-msgv3

v4 = it_message-msgv4

IMPORTING

msg = wa_error-message.

wa_error-linno = v_index.

APPEND wa_error TO it_error.

CLEAR wa_error.

ENDIF.

*session opening

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = p_group

holddate = sy-datum

keep = 'X'

user = sy-uname.

*inserting into session

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = 'XK01'

TABLES

dynprotab = it_bdcdata.

*closing session

CALL FUNCTION 'BDC_CLOSE_GROUP'.

ENDIF.

CLEAR: it_bdcdata, it_message.

REFRESH: it_bdcdata, it_message.

ENDLOOP.

----


  • SUMMARY DISPLAY

----


DESCRIBE TABLE it_vendor LINES v_totalrec.

DESCRIBE TABLE it_error LINES v_errrec.

v_succrec = v_totalrec - v_errrec .

WRITE : /1 text-004 COLOR 1.

WRITE : /2 'Total Records Processed :', 25 v_totalrec,

/2 'Error Records :', 25 v_errrec,

/2 'Successful Records :', 25 v_succrec.

SKIP 2.

WRITE : /1 text-005 COLOR 1.

LOOP AT it_error INTO wa_error.

WRITE:/2 wa_error-linno,

wa_error-message.

ENDLOOP.

SKIP 2.

WRITE : /1 text-009 COLOR 1.

ULINE AT : /2(46).

WRITE :/2 sy-vline ,(10) 'VENDOR NUM' , 15 sy-vline , 17 'VENDOR NAME' , 47 sy-vline.

ULINE AT : /2(46).

LOOP AT it_success INTO wa_success.

WRITE:/2 sy-vline , wa_success-lifnr, 15 sy-vline , 17 wa_success-name , 47 sy-vline.

ENDLOOP.

ULINE AT : /2(46).

&----


*& Form append_bdcdata

&----


FORM append_bdcdata USING p_flag p_fname p_fval.

CLEAR it_bdcdata.

IF p_flag = 'X'.

it_bdcdata-program = p_fname.

it_bdcdata-dynpro = p_fval.

it_bdcdata-dynbegin = 'X'.

APPEND it_bdcdata.

ELSEIF NOT p_fval IS INITIAL.

it_bdcdata-fnam = p_fname.

it_bdcdata-fval = p_fval.

APPEND it_bdcdata.

ENDIF.

ENDFORM. "append_bdcdata

&----


*& Form load_bdcdata

&----


FORM load_bdcdata .

PERFORM append_bdcdata USING : 'X' 'SAPMF02K' '0100',

' ' 'BDC_OKCODE' '/00',

' ' 'RF02K-KTOKK' wa_vendor-ktokk,

'X' 'SAPMF02K' '0110',

' ' 'BDC_OKCODE' '/00',

' ' 'LFA1-ANRED' wa_vendor-anred,

' ' 'LFA1-NAME1' wa_vendor-name1,

' ' 'LFA1-SORTL' wa_vendor-sortl,

' ' 'LFA1-PSTLZ' wa_vendor-pstlz,

' ' 'LFA1-LAND1' wa_vendor-land1,

'X' 'SAPMF02K' '0120',

' ' 'BDC_OKCODE' '/00',

'X' 'SAPMF02K' '0130',

' ' 'BDC_OKCODE' '=ENTR',

' ' 'LFBK-BANKS(01)' wa_vendor-banks,

' ' 'LFBK-BANKL(01)' wa_vendor-bankl,

' ' 'LFBK-BANKN(01)' wa_vendor-bankn,

'X' 'SAPMF02K' '0130',

' ' 'BDC_OKCODE' '=ENTR',

'X' 'SAPLSPO1' '0300',

' ' 'BDC_OKCODE' '=YES'.

ENDFORM. " load_bdcdata

Regards

Sandeep