on 10-13-2009 7:21 PM
Dear All,
I have a query regarding the master data upload for certificate Profile.Do we need to upload this data using LSMW/BDC. Or we manually create it in the client itself using t-codes qc01 & qc15.
Regards,
Vivek
I think we developed bdc program.. if you need i will find the code and share.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Please see the below code.
guess it should work for you..see the file structure and change accordingly.
*&---------------------------------------------------------------------*
*& Report ZQMC_CERTIFICATE_PROFILE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZQMC_CERTIFICATE_PROFILE NO STANDARD PAGE HEADING.
*Table Declaration.
TABLES:QCVM. "Certificate profile characteristic level
*Types Declaration.
TYPES:BEGIN OF TS_INFILE,
VORLNR TYPE QVORLNR, "Certificate Profile Number
CTYP TYPE QZGTYP, "Certificate Type
TDFORM TYPE QCTDFORM, "Form Name
SORTNR TYPE QSORTNR, "Sort Number
KATEGORIE TYPE QCCHARCAT, "Characteristic Category for Certificates
ATNAM TYPE ATNAM, "Characteristic Name
KZHERKWERT(2) TYPE N,"QKZHERKWT, "Origin of the Characteristic Result on the Certificate
KZHERKTEXT(2) TYPE N,"QKZHERKTXT, "Origin of Characteristic Short Text
KZHERKVG(2) TYPE N,"QKZHERKVG, "Origin of Inspection Specifications
KZSTRSKIP(2) TYPE N,"QKZSTRSKIP, "Output Strategy for Skip Characteristics
TEXTELEM(4) TYPE N,"QCTEXTELEM, "Assignment of a Characteristic to a Form Text Element
END OF TS_INFILE.
TYPES:BEGIN OF TS_QCVK,
CTYP TYPE QCVK-CTYP,
VORLNR TYPE QCVK-VORLNR,
END OF TS_QCVK.
**Data declarations for work varaibles.
DATA:GV_RC TYPE I,
W_TITLE TYPE STRING,
WA_FILETABLE TYPE LINE OF FILETABLE,
WA_RAW_DATE TYPE TRUXS_T_TEXT_DATA,
GV_FIELDNAM TYPE BDCDATA-FNAM,
GV_BDC_REC_POS(2) TYPE N,
GV_PAGE_DOWN TYPE C.
DATA:BEGIN OF IT_LOGMSG OCCURS 0,
CTYP TYPE QCVM-CTYP,
VORLNR TYPE QCVM-VORLNR,
MESSAGE(100) TYPE C,
END OF IT_LOGMSG.
*Internal Table Declarations.
DATA:IT_FILETABLE TYPE FILETABLE,
IT_INFILE TYPE TS_INFILE OCCURS 0 WITH HEADER LINE,
IT_INFILE_TMP TYPE TS_INFILE OCCURS 0 WITH HEADER LINE,
IT_BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_MSGLOG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
IT_QCVK TYPE TS_QCVK OCCURS 0 WITH HEADER LINE.
****************************************************************************
* SELECTION SCREEN
****************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
****************************************************************************
* INITIALIZATION
****************************************************************************
****************************************************************************
* AT SELECTION SCREEN *
****************************************************************************
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. " File on desktop
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = W_TITLE
CHANGING
FILE_TABLE = IT_FILETABLE
RC = GV_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
READ TABLE IT_FILETABLE INTO WA_FILETABLE INDEX 1.
MOVE WA_FILETABLE TO P_FILE.
ENDIF.
****************************************************************************
* START OF SELECTION
****************************************************************************
START-OF-SELECTION.
************************************************************************************************
PERFORM CLEAR_GLOBAL_DATA.
************************************************************************************************
PERFORM READ_INPUT_FILE.
************************************************************************************************
IF NOT IT_INFILE[] IS INITIAL.
PERFORM CALL_BDC_QC01.
ENDIF.
************************************************************************************************
IF NOT IT_LOGMSG[] IS INITIAL.
PERFORM CALL_DISPLAY_LOGDATA.
ENDIF.
************************************************************************************************
*&---------------------------------------------------------------------*
*& Form CLEAR_GLOBAL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CLEAR_GLOBAL_DATA.
CLEAR:IT_INFILE,IT_INFILE[],IT_INFILE_TMP,IT_INFILE_TMP[],IT_BDCDATA,IT_BDCDATA[],
IT_QCVK,IT_QCVK[],IT_LOGMSG,IT_LOGMSG[].
ENDFORM. " CLEAR_GLOBAL_DATA
*&---------------------------------------------------------------------*
*& Form READ_INPUT_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM READ_INPUT_FILE.
CLEAR:IT_INFILE,IT_INFILE[],IT_INFILE_TMP,IT_INFILE_TMP[].
************************************************************************************************
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_LINE_HEADER = 'X'
I_TAB_RAW_DATA = WA_RAW_DATE
I_FILENAME = P_FILE
TABLES
I_TAB_CONVERTED_DATA = IT_INFILE
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
MESSAGE 'File Data not Uploaded' TYPE 'S' DISPLAY LIKE 'E'.
STOP.
ELSE.
IF NOT IT_INFILE[] IS INITIAL.
LOOP AT IT_INFILE.
TRANSLATE IT_INFILE-VORLNR TO UPPER CASE.
TRANSLATE IT_INFILE-CTYP TO UPPER CASE.
MODIFY IT_INFILE TRANSPORTING VORLNR CTYP.
ENDLOOP.
SELECT CTYP
VORLNR FROM QCVK INTO TABLE IT_QCVK
FOR ALL ENTRIES IN IT_INFILE
WHERE CTYP EQ IT_INFILE-CTYP
AND VORLNR EQ IT_INFILE-VORLNR.
************************************************************************************************
LOOP AT IT_INFILE.
CLEAR IT_LOGMSG.
READ TABLE IT_QCVK WITH KEY CTYP = IT_INFILE-CTYP
VORLNR = IT_INFILE-VORLNR.
IF SY-SUBRC EQ 0.
MOVE:IT_INFILE-CTYP TO IT_LOGMSG-CTYP,
IT_INFILE-VORLNR TO IT_LOGMSG-VORLNR,
'Already Exists the Certificate profile characteristic level Data' TO IT_LOGMSG-MESSAGE.
APPEND IT_LOGMSG.
CLEAR IT_LOGMSG.
DELETE IT_INFILE WHERE VORLNR EQ IT_INFILE-VORLNR AND CTYP EQ IT_INFILE-CTYP.
ENDIF.
CLEAR:IT_INFILE,IT_LOGMSG,IT_QCVK.
ENDLOOP.
************************************************************************************************
IT_INFILE_TMP[] = IT_INFILE[].
SORT IT_INFILE_TMP BY VORLNR CTYP SORTNR ASCENDING.
DELETE ADJACENT DUPLICATES FROM IT_INFILE_TMP COMPARING VORLNR CTYP.
ENDIF.
ENDIF.
ENDFORM. " READ_INPUT_FILE
*&---------------------------------------------------------------------*
*& Form CALL_BDC_QC01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CALL_BDC_QC01.
LOOP AT IT_INFILE_TMP.
CLEAR:IT_BDCDATA,IT_BDCDATA[],GV_BDC_REC_POS.
************************************************************************************************
PERFORM BDC_DYNPRO USING 'SAPMQCPA' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENT1'.
PERFORM BDC_FIELD USING 'QCVKEA-VORLNR' IT_INFILE_TMP-VORLNR.
PERFORM BDC_FIELD USING 'QCVKEA-CTYP' IT_INFILE_TMP-CTYP.
************************************************************************************************
PERFORM BDC_DYNPRO USING 'SAPMQCPA' '0110'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=FREI'.
PERFORM BDC_FIELD USING 'USE_SAPSCRIPT' 'X'.
PERFORM BDC_FIELD USING 'QCVKEA-TDFORM' IT_INFILE_TMP-TDFORM.
PERFORM BDC_FIELD USING 'QCVKEA-NOT_EXIST_SPRAS' 'E'.
************************************************************************************************
PERFORM BDC_DYNPRO USING 'SAPMQCPA' '0110'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=MKUE'.
PERFORM BDC_FIELD USING 'USE_SAPSCRIPT' 'X'.
PERFORM BDC_FIELD USING 'QCVKEA-TDFORM' IT_INFILE_TMP-TDFORM.
PERFORM BDC_FIELD USING 'QCVKEA-NOT_EXIST_SPRAS' 'E'.
************************************************************************************************
PERFORM BDC_DYNPRO USING 'SAPMQCPA' '0120'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
************************************************************************************************
CLEAR:GV_BDC_REC_POS.
LOOP AT IT_INFILE WHERE VORLNR EQ IT_INFILE_TMP-VORLNR AND CTYP EQ IT_INFILE_TMP-CTYP.
CLEAR:GV_FIELDNAM.
************************************************************************************************
IF GV_BDC_REC_POS GT 16.
MOVE 'X' TO GV_PAGE_DOWN.
ENDIF.
IF GV_PAGE_DOWN EQ 'X'.
PERFORM BDC_DYNPRO USING 'SAPMQCPA' '0120'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=P+'.
PERFORM BDC_DYNPRO USING 'SAPMQCPA' '0120'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
CLEAR:GV_PAGE_DOWN.
MOVE 1 TO GV_BDC_REC_POS.
ENDIF.
GV_BDC_REC_POS = GV_BDC_REC_POS + 1.
************************************************************************************************
CLEAR:GV_FIELDNAM.
CONCATENATE 'QCVMEA-SORTNR' '(' GV_BDC_REC_POS ')' INTO GV_FIELDNAM.
PERFORM BDC_FIELD USING GV_FIELDNAM IT_INFILE-SORTNR.
CLEAR:GV_FIELDNAM.
CONCATENATE 'QCVMEA-KATEGORIE' '(' GV_BDC_REC_POS ')' INTO GV_FIELDNAM.
PERFORM BDC_FIELD USING GV_FIELDNAM IT_INFILE-KATEGORIE.
CLEAR:GV_FIELDNAM.
CONCATENATE 'QCVMEA-ATNAM' '(' GV_BDC_REC_POS ')' INTO GV_FIELDNAM.
PERFORM BDC_FIELD USING GV_FIELDNAM IT_INFILE-ATNAM.
CLEAR:GV_FIELDNAM.
CONCATENATE 'QCVMEA-KZHERKWERT' '(' GV_BDC_REC_POS ')' INTO GV_FIELDNAM.
PERFORM BDC_FIELD USING GV_FIELDNAM IT_INFILE-KZHERKWERT.
CLEAR:GV_FIELDNAM.
CONCATENATE 'QCVMEA-KZHERKTEXT' '(' GV_BDC_REC_POS ')' INTO GV_FIELDNAM.
PERFORM BDC_FIELD USING GV_FIELDNAM IT_INFILE-KZHERKTEXT.
CLEAR:GV_FIELDNAM.
CONCATENATE 'QCVMEA-KZHERKVG' '(' GV_BDC_REC_POS ')' INTO GV_FIELDNAM.
PERFORM BDC_FIELD USING GV_FIELDNAM IT_INFILE-KZHERKVG.
CLEAR:GV_FIELDNAM.
CONCATENATE 'QCVMEA-KZSTRSKIP' '(' GV_BDC_REC_POS ')' INTO GV_FIELDNAM.
PERFORM BDC_FIELD USING GV_FIELDNAM IT_INFILE-KZSTRSKIP.
CLEAR:GV_FIELDNAM.
CONCATENATE 'QCVMEA-TEXT_ELEM' '(' GV_BDC_REC_POS ')' INTO GV_FIELDNAM.
PERFORM BDC_FIELD USING GV_FIELDNAM IT_INFILE-TEXTELEM.
CLEAR:GV_FIELDNAM.
ENDLOOP.
************************************************************************************************
PERFORM BDC_DYNPRO USING 'SAPMQCPA' '0120'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SAVE'.
************************************************************************************************
*************Call the QCO1 for Creating the Certificate profile characteristic level************
PERFORM CALL_QC01_TCODE_CREATE USING IT_INFILE_TMP-VORLNR IT_INFILE_TMP-CTYP.
************************************************************************************************
CLEAR:IT_BDCDATA,IT_BDCDATA[],GV_BDC_REC_POS.
ENDLOOP.
ENDFORM. " CALL_BDC_QC01
*****************************************************************************************
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM
SCREEN.
CLEAR IT_BDCDATA.
MOVE:PROGRAM TO IT_BDCDATA-PROGRAM,
SCREEN TO IT_BDCDATA-DYNPRO,
'X' TO IT_BDCDATA-DYNBEGIN.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
ENDFORM. "bdc_dynpro
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
FORM BDC_FIELD USING NAME VALUE.
CLEAR IT_BDCDATA.
MOVE:NAME TO IT_BDCDATA-FNAM,
VALUE TO IT_BDCDATA-FVAL.
CONDENSE IT_BDCDATA-FVAL.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
ENDFORM. "bdc_field
*&---------------------------------------------------------------------*
*& Form CALL_QC01_TCODE_CREATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CALL_QC01_TCODE_CREATE USING P_VORLNR TYPE QVORLNR P_CTYP TYPE QZGTYP.
DATA:LS_QCVK TYPE QCVK.
CLEAR:IT_MSGLOG,IT_MSGLOG[],IT_LOGMSG,LS_QCVK.
************************************************************************************************
CALL TRANSACTION 'QC01' USING IT_BDCDATA
MODE 'N'
UPDATE 'A'
MESSAGES INTO IT_MSGLOG.
WAIT UP TO 2 SECONDS.
************************************************************************************************
SELECT SINGLE * FROM QCVK INTO LS_QCVK WHERE CTYP EQ P_CTYP AND VORLNR EQ P_VORLNR.
IF SY-SUBRC EQ 0.
MOVE:P_CTYP TO IT_LOGMSG-CTYP,
P_VORLNR TO IT_LOGMSG-VORLNR,
'Certificate profile characteristic level Data, Created Sucessfully.' TO IT_LOGMSG-MESSAGE.
APPEND IT_LOGMSG.
CLEAR IT_LOGMSG.
ELSE.
MOVE:P_CTYP TO IT_LOGMSG-CTYP,
P_VORLNR TO IT_LOGMSG-VORLNR,
'Certificate profile characteristic level Data Not Created' TO IT_LOGMSG-MESSAGE.
APPEND IT_LOGMSG.
CLEAR IT_LOGMSG.
ENDIF.
************************************************************************************************
ENDFORM. " CALL_QC01_TCODE_CREATE
*&---------------------------------------------------------------------*
*& Form CALL_DISPLAY_LOGDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CALL_DISPLAY_LOGDATA.
WRITE:/2 'Certificate Profile', 23 'Certificate Type', 45 'Message'.
SKIP.
LOOP AT IT_LOGMSG.
WRITE:/2 IT_LOGMSG-VORLNR,23 IT_LOGMSG-CTYP , 45 IT_LOGMSG-MESSAGE.
ENDLOOP.
ENDFORM. " CALL_DISPLAY_LOGDATA
Query Resolved
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Dear Vivek,
Sujit is absolutely correct. If your data is huge then go with BDC or LSMW to create Certificate profile.
One thing you can do to unify the data is , create same number of COA Profiles that equals to your inspection plans.
and then assign all the materials to the profile that are assigned to inspection plan.
By doing this you may have to create less profiles.
Regards,
Shyamal
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Dear Vivek,
Sujit is absolutely correct. If your data is huge then go with BDC or LSMW to create Certificate profile.
One thing you can do to unify the data is , create same number of COA Profiles that equals to your inspection plans.
and then assign all the materials to the profile that are assigned to inspection plan.
By doing this you may have to create less profiles.
Regards,
Shyamal
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
If Cerificate Profiles are more then Better to use BDC as by using LSMW you will not able to uplad the charecteristic level.
or else enter it manually
Also remember that Quality certificatr profile are not master data which can be trnsfered from one client to other.
This is as per my knowledge
Regards
Sujit
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
103 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.