近期在改动一个检验计划分配的一个程序。上网查了一些资料,分别对QP01检验计划创建、改动QP02、删除物料等操作。分享一下。

一、QP01 BAPI

BAPI_INSPECTIONPLAN_CREATE

二、BDC for QP02

REPORT  ZQM_BDC_QP02.

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

*TYPE-POOLS                                                            *

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

TYPE-POOLS TRUXS.

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

*TYPE DECLARATION                                                      *

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

TYPES : BEGIN OF TYPE_BDCDATA,

          PROGRAM  TYPE BDC_PROG,

          DYNPRO   TYPE BDC_DYNR,

          DYNBEGIN TYPE BDC_START,

          FNAM     TYPE FNAM_____4,

          FVAL     TYPE BDC_FVAL,

        END OF TYPE_BDCDATA,

BEGIN OF TYPE_DATA,

          MATNR TYPE MATNR_BI,

          WERKS TYPE WERKS,

        END OF TYPE_DATA.

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

*WORK AREA DECLARATION                                                 *

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

DATA : WA_BDCDATA TYPE TYPE_BDCDATA,

       WA_DATA    TYPE TYPE_DATA,

       WA_MESSTAB TYPE BDCMSGCOLL,

       WA_RAW     TYPE TRUXS_T_TEXT_DATA.

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

*INTERNAL TABLE DECLARATION                                            *

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

DATA : I_BDCDATA TYPE STANDARD TABLE OF TYPE_BDCDATA,

       I_DATA    TYPE STANDARD TABLE OF TYPE_DATA,

       I_MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL.

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

*DATA DECLARATION                                                      *

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

DATA   WF_MESSAGE(100).

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

*SELECTION-SCREEN DECLARATION                                          *

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

SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.

PARAMETERS : P_FILE TYPE LOCALFILE OBLIGATORY,

             P_MODE DEFAULT 'A'.

SELECTION-SCREEN END OF BLOCK A1.

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

*AT SELECTION-SCREEN ON VALUE-REQUEST DECLARATION                      *

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

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

 EXPORTING

    FIELD_NAME          = 'P_FILE'

  CHANGING

    FILE_NAME           = P_FILE

          .

REFRESH I_DATA[].

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

  EXPORTING

    I_LINE_HEADER              = 'X'

    I_TAB_RAW_DATA             = WA_RAW

    I_FILENAME                 = P_FILE

  TABLES

    I_TAB_CONVERTED_DATA       = I_DATA

          .

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

*START-OF-SELECTION                                                    *

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

START-OF-SELECTION.

LOOP AT I_DATA INTO WA_DATA.

perform bdc_dynpro      using 'SAPLCPDI' '8010'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_field       using 'RC27M-MATNR'

                               WA_DATA-MATNR.

perform bdc_field       using 'RC27M-WERKS'

                               WA_DATA-WERKS.

perform bdc_dynpro      using 'SAPLCPDI' '1400'.

perform bdc_field       using 'BDC_OKCODE'

                              '=ALD1'.

perform bdc_field       using 'RC27X-ENTRY_ACT'

                              '1'.

perform bdc_dynpro      using 'SAPLCPDA' '1200'.

perform bdc_field       using 'BDC_OKCODE'

                              '=MTUE'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'MAPL-PLNAL(02)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(03)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(04)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(05)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(06)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(07)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(08)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(09)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(10)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(11)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(12)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(13)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(14)'

                              '1'.

perform bdc_field       using 'MAPL-MATNR(02)'

                              '8514AA-MEG-0002-02'.

perform bdc_field       using 'MAPL-MATNR(03)'

                              '8514AA-MEG-0002-03'.

perform bdc_field       using 'MAPL-MATNR(04)'

                              '8514AA-MEG-0002-04'.

perform bdc_field       using 'MAPL-MATNR(05)'

                              '8514AA-MEG-0002-05'.

perform bdc_field       using 'MAPL-MATNR(06)'

                              '8514AA-MEG-0002-06'.

perform bdc_field       using 'MAPL-MATNR(07)'

                              '8514AA-MEG-0002-07'.

perform bdc_field       using 'MAPL-MATNR(08)'

                              '8514AA-MEG-0002-08'.

perform bdc_field       using 'MAPL-MATNR(09)'

                              '8514AA-MEG-0002-09'.

perform bdc_field       using 'MAPL-MATNR(10)'

                              '8514AA-MEG-0002-10'.

perform bdc_field       using 'MAPL-MATNR(11)'

                              '8514AA-MEG-0002-11'.

perform bdc_field       using 'MAPL-MATNR(12)'

                              '8514AA-MEG-0002-12'.

perform bdc_field       using 'MAPL-MATNR(13)'

                              '8514AA-MEG-0002-13'.

perform bdc_field       using 'MAPL-MATNR(14)'

                              '8514AA-MEG-0002-14'.

perform bdc_field       using 'MAPL-WERKS(02)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(03)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(04)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(05)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(06)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(07)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(08)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(09)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(10)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(11)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(12)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(13)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(14)'

                              '2000'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_field       using 'MAPL-PLNAL(02)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(03)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(04)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(05)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(06)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(07)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(08)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(09)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(10)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(11)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(12)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(13)'

                              '1'.

perform bdc_field       using 'MAPL-PLNAL(14)'

                              '1'.

perform bdc_field       using 'MAPL-MATNR(02)'

                              '8514AA-MEG-0002-15'.

perform bdc_field       using 'MAPL-MATNR(03)'

                              '8514AA-MEG-0002-16'.

perform bdc_field       using 'MAPL-MATNR(04)'

                              '8514AA-MEG-0002-17'.

perform bdc_field       using 'MAPL-MATNR(05)'

                              '8514AA-MEG-0002-18'.

perform bdc_field       using 'MAPL-MATNR(06)'

                              '8514AA-MEG-0002-19'.

perform bdc_field       using 'MAPL-MATNR(07)'

                              '8514AA-MEG-0002-20'.

perform bdc_field       using 'MAPL-MATNR(08)'

                              '8514AA-MEG-0002-21'.

perform bdc_field       using 'MAPL-MATNR(09)'

                              '8514AA-MEG-0002-22'.

perform bdc_field       using 'MAPL-MATNR(10)'

                              '8514AA-MEG-0002-23'.

perform bdc_field       using 'MAPL-MATNR(11)'

                              '8514AA-MEG-0002-24'.

perform bdc_field       using 'MAPL-MATNR(12)'

                              '8514AA-MEG-0002-25'.

perform bdc_field       using 'MAPL-MATNR(13)'

                              '8514AA-MEG-0002-26'.

perform bdc_field       using 'MAPL-MATNR(14)'

                              '8514AA-MEG-0002-27'.

perform bdc_field       using 'MAPL-WERKS(02)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(03)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(04)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(05)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(06)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(07)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(08)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(09)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(10)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(11)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(12)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(13)'

                              '2000'.

perform bdc_field       using 'MAPL-WERKS(14)'

                              '2000'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'RC271-PLNNR'.

perform bdc_field       using 'BDC_OKCODE'

                              '/00'.

perform bdc_dynpro      using 'SAPLCZDI' '4010'.

perform bdc_field       using 'BDC_CURSOR'

                              'MAPL-WERKS(03)'.

perform bdc_field       using 'BDC_OKCODE'

                              '=BACK'.

perform bdc_field       using 'MAPL-PLNAL(03)'

                              '1'.

perform bdc_field       using 'MAPL-MATNR(03)'

                              '8514AA-MEG-0002-28'.

perform bdc_field       using 'MAPL-WERKS(03)'

                              '2000'.

perform bdc_dynpro      using 'SAPLCPDA' '1200'.

perform bdc_field       using 'BDC_OKCODE'

                              '=BU'.

perform bdc_field       using 'BDC_CURSOR'

                              'PLKOD-KTEXT'.

perform bdc_field       using 'PLKOD-KTEXT'

                              '8514AA-MEG-0002-01  -Package -04- RC C'

                            & 'oo'.

perform bdc_field       using 'PLKOD-WERKS'

                              '2000'.

perform bdc_field       using 'PLKOD-VERWE'

                              'Z1'.

perform bdc_field       using 'PLKOD-STATU'

                              '4'.

perform bdc_field       using 'PLKOD-LOSBS'

                              '99,999,999'.

perform bdc_field       using 'PLKOD-PLNME'

                              'EA'.

perform bdc_field       using 'PLKOD-SLWBEZ'

                              'Z01'.

CALL TRANSACTION 'QP02' USING I_BDCDATA MODE P_MODE UPDATE 'A' MESSAGES INTO I_MESSTAB.

REFRESH I_BDCDATA[].

ENDLOOP.

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

*START-OF-SELECTION                                                    *

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

END-OF-SELECTION.

LOOP AT I_MESSTAB INTO WA_MESSTAB.

CLEAR WF_MESSAGE.

CALL FUNCTION 'FORMAT_MESSAGE'

 EXPORTING

   ID              = WA_MESSTAB-MSGID

   LANG            = SY-LANGU

   NO              = WA_MESSTAB-MSGNR

   V1              = WA_MESSTAB-MSGV1

   V2              = WA_MESSTAB-MSGV2

   V3              = WA_MESSTAB-MSGV3

   V4              = WA_MESSTAB-MSGV4

 IMPORTING

   MSG             = WF_MESSAGE

 EXCEPTIONS

   NOT_FOUND       = 1

   OTHERS          = 2.

WRITE / WF_MESSAGE .

ENDLOOP.

ULINE.

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

*&      Form  BDC_FIELD

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

FORM BDC_FIELD USING FNAM TYPE ANY

                     FVAL TYPE ANY.

CLEAR WA_BDCDATA.

  WA_BDCDATA-FNAM = FNAM.

  WA_BDCDATA-FVAL = FVAL.

APPEND WA_BDCDATA TO I_BDCDATA.

ENDFORM.                    " BDC_FIELD

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

*&      Form  BDC_DYNPRO

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

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 I_BDCDATA.

ENDFORM.                    " BDC_DYNPRO



三、Deleting material assignments from inspection plans

ISSUE

Recently I had the issue that a material has been wrongly assigned to an inspection plan in a test system. If you remove the assignment in QP02 via the delete button, the system only sets a deletion indicator in table MAPL on this assignment. Hence the material
assignment is still blocking actions like "change of unit of measure". After digging a bit in the internet I found an SAP report for this, which I like to share also here on SCN.

 

STANDARD SOLUTION

The correct way to get rid of the assignment is to archive the complete inspection plan (I have not found a way so far to just archive a material-task list assignment).

 

WORKAROUND

Beside using transaction QSR6 (which deletes the complete inspection plan from the database without archiving), there is an SAP report that just deletes material assignments from the database: RCPMAPL1

 

With entering the task list type (e.g. Q) and the group ID, the report displays all assignments. The ones that should be removed can be marked and deleted. It is advisable to first remove the assignment with QP02, as then the deletion indicator will be visible
in the report. This ensures that you tick the right assignment...

 

WARNING

As always with these kind of actions: be aware that you bypass most SAP security concepts (like dependency/integrity checks,...) with this action! You will most likely need a special approval from (IT) Managment and you normally have to record these actions
and document them so that an auditor will understand why this had to be done.

QP01 BAPI、QP02 BDC的更多相关文章

  1. BAPI、badi 和 LSMW 的相同点和不同点及具体操作

    一开始badi.BAPI.LSMW关系极其混乱,好像都是传输数据, just transfer data from SAP system to non-SAP system or transfer d ...

  2. LSMW应用

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. abap 常用 function

    ABAP常用函数总结  alv .smartform. excel .text.邮件 .远程访问,FTP服务器...  **********常用功能function REUSE_ALV_GRID_DI ...

  4. ABAP重点各种接口技术

    转自 http://www.cnblogs.com/penley/archive/2008/11/12/1332140.html 下面总结一下ABAP中的各种接口技术,因为学习时间不是很长,肯定还不全 ...

  5. ABAP 生产订单的创建与修改函数

    ABAP 生产订单的创建与修改函数转自http://www.cnblogs.com/aBaoRong/archive/2012/04/11/2441946.html   如果生产订单过多,可以批量创建 ...

  6. SAP Gateway简介

    SAP Gateway在S4/HANA时代的ABAP开发模型中有着重要的地位.SAP Gateway是什么?它对ABAP开发有怎样的影响?可以为我们提供哪些方便?这篇译文将浅要地讨论这些话题. SAP ...

  7. SAP 优缺点

    1.优点: SAP是全球所有ERP产品中对企业构架和财务控制考虑得最细致的系统,也是整体控制逻辑和整体系统结构是最严谨的系统,可以让企业引进先进的管理理念: 对产品在各种行业的适用性考虑得最多的系统, ...

  8. Informatica_(6)性能调优

    六.实战汇总31.powercenter 字符集 了解源或者目标数据库的字符集,并在Powercenter服务器上设置相关的环境变量或者完成相关的设置,不同的数据库有不同的设置方法: 多数字符集的问题 ...

  9. SAP Web Service简介与配置方法

    [版权声明]本文为博主原创文章,转载请在明显位置注明出处. 一. SAP Web Service简介 二. SAP Web Service配置准备工作 1. 通过RZ10配置服务器名称和其他参数 2. ...

随机推荐

  1. 强引用,弱引用,4种Java引用浅解(涉及jvm垃圾回收)

    http://www.jb51.net/article/49085.htm http://www.jb51.net/article/49085.htm

  2. 判断iPhone和iPad 判断设备版本

    //判断iPhone和iPad #define IS_IPHONE (!IS_IPAD) #define IS_IPAD (UI_USER_INTERFACE_IDIOM() != UIUserInt ...

  3. [转] 详细整理:UITableView优化技巧

      原文:http://www.cocoachina.com/ios/20150602/11968.html   最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化 ...

  4. 从cellForRowAtIndexPath 看cell的重用机制

    今天突然发现一个问题,由于对UITableViewCell 的重用机制不是很了解,让我纠结很久: 用过reloadData时候,会调用cellForRowAtIndexPath方法,但是请看以下2种c ...

  5. 新手对css的浅识

    对于css的一个初步理解与认识 在最近的学习中接触到了之前自己从来都不曾想过的语言,C语言,html超文本标记语言等等,还有今天在这里我要进行分析的css,之前浏览过很多的网页,也曾想过这里面的秘密, ...

  6. cas sso单点登录系列6_cas单点登录防止登出退出后刷新后退ticket失效报500错

    转(http://blog.csdn.net/ae6623/article/details/9494601) 问题: 我登录了client2,又登录了client3,现在我把client2退出了,在c ...

  7. 『重构--改善既有代码的设计』读书笔记----Remove Assignments to Parameters

    C++存在按值传递和按引用传递两种传递方式,Java严格按照按值传递这种方式来进行.以按值传递方式的角度来说,如果你 int test(int a) { ) { a = 1; } return a; ...

  8. 破解Inode客户端使用笔记本共享WIFI

    由于住在学校的公寓里面,所以使用的是校园网,但是校园网限制了无线的使用,强制所有网络用户使用INode网络客户端,这个客户端不但很丑很难看,而且每天联网十分费劲,费了半天的力气终于联上网了,可是一眨眼 ...

  9. 深入了解使用egret.WebSocket

    概念 本教程不讲解TCP/IP协议,Socket属于哪层,消息包体怎么设计等,主讲 egret.WebSocket 使用示例 与 protobuf 使用示例. 在使用egret.WebSocket之前 ...

  10. indexof()方法

    w3c手册定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置 stringObject.indexOf(searchvalue,fromindex) searchva ...