Application Development 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: 

BDC for QP01

Former Member
0 Kudos

Hi All,

please any one send bdc code for t-code QP01.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi friend,

i am giving the code if help full to u please give the max reward point.

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.

5 REPLIES 5

Former Member
0 Kudos

Hi friend,

i am giving the code if help full to u please give the max reward point.

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.

0 Kudos

Thanks for posting.

using your code , I solved my problame

Thanks and Regards

jyoti prakash

Former Member
0 Kudos

Dear prasanta

Can you please Send Me The Excel Sheet for uploading the data through BDC for QP01.I Try this program But there is Lot of Error

Regards

Sanjay

Former Member
0 Kudos

High Can be please the input Excel sheet to upload this program for QP01

Regards

Sanjay

0 Kudos

Hi sanjay,

U can try my code which uses BAPI for uploading QM inspection plans...

[Click here to see the program with template and sample data....|https://wiki.sdn.sap.com/wiki/display/Snippets/ABAPProgramtouploadQMInspectionPlanUsingBAPI]

Revert back if u have any doubts.

Regards

KArthik D