#遇见问题:

1.这三个BAPI一般用在批导程序中,有时候赋值过程中就会忽视计划订单的前导零。并且,在SE37里面对BAPI进行测试的时候,不输入前导零BAPI也会返回正确的结果,然而程序里并不行。个人猜测是SE37会自动加上前导零。
2.对于消息的处理,一定不能用 MESSAGE ’ ’ TYPE ‘E’ 来进行直接写消息,因为提示错误消息后,程序不会继续执行下去,批导程序里一般是不允许的。我们可以把消息保存,红绿灯变色,保存到内表,然后让程序跳过当前BAPI,ROLLBACK,执行下一个BAPI。

#源代码

FORM SUB_IMPORT_PROCESS .DATA: LS_HEADERDATA     TYPE BAPIPLAF_I2,LT_HEADERDATA     TYPE TABLE OF BAPIPLAF_I2,LS_HEADERDATAX    TYPE BAPIPLAF_I2X,LT_HEADERDATAX    TYPE TABLE OF BAPIPLAF_I2X,LS_BAPIPLAF_I1    TYPE BAPIPLAF_I1,LT_BAPIPLAF_I1    TYPE TABLE OF BAPIPLAF_I1,LT_RETURN         TYPE TABLE OF BAPIRETURN1,LS_RETURN         TYPE BAPIRETURN1,LT_COMPONENTSDATA TYPE TABLE OF BAPI_PLDORDCOMP_E1,LS_COMPONENTSDATA TYPE BAPI_PLDORDCOMP_E1.DATA: LT_TAB_D TYPE TABLE OF TY_TAB WITH HEADER LINE,*        LS_TAB_D TYPE TY_TAB,LT_TAB_M TYPE TABLE OF TY_TAB WITH HEADER LINE,
*        LS_TAB_M TYPE TY_TAB,LT_TAB_C TYPE TABLE OF TY_TAB WITH HEADER LINE.
*        LS_TAB_C TYPE TY_TAB,
*        LS_TAB   TYPE TY_TAB.DATA: LV_FIRST(1),LV_ERROR(1),LV_MSG      TYPE STRING,LV_OBJ_INDX TYPE I,LV_VAL_INDX TYPE I.DATA: LV_FIELDNAME TYPE FIELDNAME.DATA: NUM TYPE I.FIELD-SYMBOLS <LV_VAL> TYPE BAPICURR_D.NUM = 0.LOOP AT GT_TAB INTO LS_TAB.NUM = NUM + 1.LS_TAB-NUM = NUM.MODIFY GT_TAB FROM LS_TAB.CLEAR LS_TAB.ENDLOOP.LT_TAB_D[] = GT_TAB[].DELETE LT_TAB_D WHERE ZMARK NE 'D'.DELETE LT_TAB_D WHERE CHECKBOX NE 'X'.LT_TAB_M[] = GT_TAB[].DELETE LT_TAB_M WHERE ZMARK NE 'M'.DELETE LT_TAB_M WHERE CHECKBOX NE 'X'.LT_TAB_C[] = GT_TAB[].DELETE LT_TAB_C WHERE ZMARK NE 'C'.DELETE LT_TAB_C WHERE CHECKBOX NE 'X'.*--------删除计划订单LOOP AT LT_TAB_D WHERE TYPE NE 'E'.CALL FUNCTION 'BAPI_PLANNEDORDER_DELETE'EXPORTINGPLANNEDORDER          = LT_TAB_D-PLNUMIMPORTINGRETURN                = LS_RETURN.CLEAR: LV_ERROR, LV_MSG.*    LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE CA 'AE'.IF LS_RETURN-TYPE CA 'AE'.LV_ERROR = 'X'.CHECK LS_RETURN-ID NE 'BAPI'.IF LV_MSG IS INITIAL.LV_MSG = LS_RETURN-MESSAGE.ELSE.LV_MSG = LV_MSG && '|' && LS_RETURN-MESSAGE.ENDIF.ENDIF.IF LV_ERROR IS INITIAL.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.LOOP AT GT_TAB INTO LS_TAB WHERE NUM = LT_TAB_D-NUM.LS_TAB-LIGHT   = ICON_LED_GREEN.LS_TAB-TYPE    = 'S'.LS_TAB-MESSAGE = LS_RETURN-MESSAGE.MODIFY GT_TAB FROM LS_TAB .CLEAR LS_TAB.ENDLOOP.
*        LEAVE TO SCREEN 0.ELSE.LOOP AT GT_TAB INTO LS_TAB WHERE NUM = LT_TAB_D-NUM.LS_TAB-LIGHT   = ICON_LED_RED.LS_TAB-TYPE    = 'E'.LS_TAB-MESSAGE = LV_MSG.MODIFY GT_TAB FROM LS_TAB .CLEAR LS_TAB.ENDLOOP.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*      MESSAGE E208(00) WITH LV_MSG.ENDIF.CLEAR: LS_RETURN,LT_TAB_D,LS_TAB.ENDLOOP.*---------修改计划订单LOOP AT LT_TAB_M WHERE TYPE NE 'E'.LS_HEADERDATA-TOTAL_PLORD_QTY = LT_TAB_M-GSMNG.LS_HEADERDATA-ORDER_START_DATE = LT_TAB_M-PSTTR.LS_HEADERDATA-ORDER_FIN_DATE = LT_TAB_M-PEDTR.LS_HEADERDATA-FIRMING_IND = 'X'.LS_HEADERDATAX-TOTAL_PLORD_QTY = 'X'.LS_HEADERDATAX-ORDER_START_DATE = 'X'.LS_HEADERDATAX-ORDER_FIN_DATE = 'X'.LS_HEADERDATAX-FIRMING_IND = 'X'.CALL FUNCTION 'BAPI_PLANNEDORDER_CHANGE'EXPORTINGPLANNEDORDER              = LT_TAB_M-PLNUMHEADERDATA                = LS_HEADERDATAHEADERDATAX               = LS_HEADERDATAXIMPORTINGRETURN                    = LS_RETURN.CLEAR: LV_ERROR, LV_MSG.IF LS_RETURN-TYPE CA 'AE'.LV_ERROR = 'X'.CHECK LS_RETURN-ID NE 'BAPI'.IF LV_MSG IS INITIAL.LV_MSG = LS_RETURN-MESSAGE.ELSE.LV_MSG = LV_MSG && '|' && LS_RETURN-MESSAGE.ENDIF.ENDIF.IF LV_ERROR IS INITIAL.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.LOOP AT GT_TAB INTO LS_TAB WHERE NUM = LT_TAB_M-NUM.LS_TAB-LIGHT   = ICON_LED_GREEN.LS_TAB-TYPE    = 'S'.LS_TAB-MESSAGE = '计划订单修改成功'.MODIFY GT_TAB FROM LS_TAB .CLEAR LS_TAB.ENDLOOP.ELSE.LOOP AT GT_TAB INTO LS_TAB WHERE NUM = LT_TAB_M-NUM.LS_TAB-LIGHT   = ICON_LED_RED.LS_TAB-TYPE    = 'E'.LS_TAB-MESSAGE = LV_MSG.MODIFY GT_TAB FROM LS_TAB .CLEAR LS_TAB.ENDLOOP.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ENDIF.CLEAR: LS_RETURN,LT_TAB_M,LS_HEADERDATA,LS_HEADERDATAX.ENDLOOP.*---------创建计划订单LOOP AT LT_TAB_C WHERE TYPE NE 'E'.LS_BAPIPLAF_I1-PLDORD_PROFILE  = LT_TAB_C-PAART.LS_BAPIPLAF_I1-MATERIAL = LT_TAB_C-MATNR.LS_BAPIPLAF_I1-PLAN_PLANT = LT_TAB_C-PLWRK.LS_BAPIPLAF_I1-PROD_PLANT = LT_TAB_C-PWWRK.LS_BAPIPLAF_I1-TOTAL_PLORD_QTY = LT_TAB_C-GSMNG.LS_BAPIPLAF_I1-SALES_ORD = LT_TAB_C-KDAUF.LS_BAPIPLAF_I1-S_ORD_ITEM = LT_TAB_C-KDPOS.LS_BAPIPLAF_I1-ORDER_START_DATE = LT_TAB_C-PSTTR.LS_BAPIPLAF_I1-ORDER_FIN_DATE = LT_TAB_C-PEDTR.LS_BAPIPLAF_I1-PLAN_OPEN_DATE = LT_TAB_C-PSTTR.LS_BAPIPLAF_I1-FIRMING_IND = 'X'.LS_BAPIPLAF_I1-CONVERSION_IND = 'X'.LS_BAPIPLAF_I1-VERSION = LT_TAB_C-VERID.LS_BAPIPLAF_I1-ACCTASSCAT = 'M'.*    APPEND LS_BAPIPLAF_I1 TO LT_BAPIPLAF_I1.CALL FUNCTION 'BAPI_PLANNEDORDER_CREATE'EXPORTINGHEADERDATA                = LS_BAPIPLAF_I1IMPORTINGRETURN                    = LS_RETURN.CLEAR: LV_ERROR, LV_MSG.IF LS_RETURN-TYPE CA 'AE'.LV_ERROR = 'X'.CHECK LS_RETURN-ID NE 'BAPI'.IF LV_MSG IS INITIAL.LV_MSG = LS_RETURN-MESSAGE.ELSE.LV_MSG = LV_MSG && '|' && LS_RETURN-MESSAGE.ENDIF.ENDIF.IF LV_ERROR IS INITIAL.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.LOOP AT GT_TAB INTO LS_TAB WHERE NUM = LT_TAB_C-NUM.LS_TAB-LIGHT   = ICON_LED_GREEN.LS_TAB-TYPE    = 'S'.LS_TAB-MESSAGE = '计划订单创建成功'.MODIFY GT_TAB FROM LS_TAB .CLEAR LS_TAB.ENDLOOP.ELSE.LOOP AT GT_TAB INTO LS_TAB WHERE NUM = LT_TAB_C-NUM.LS_TAB-LIGHT   = ICON_LED_RED.LS_TAB-TYPE    = 'E'.LS_TAB-MESSAGE = LV_MSG.MODIFY GT_TAB FROM LS_TAB .CLEAR LS_TAB.ENDLOOP.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ENDIF.CLEAR: LS_RETURN,LS_BAPIPLAF_I1.ENDLOOP.
ENDFORM.

BAPI : 计划订单的创建,修改和删除批导问题相关推荐

  1. C#xml创建修改读取删除帮助类XmlHelper.cs

    <strong><span style="color:#ff0000;">[XML帮助类]C#xml创建修改读取删除帮助类XmlHelper.cs < ...

  2. oracle SEQUENCE 创建, 修改,删除

    oracle创建序列化: CREATE SEQUENCE seq_itv_collection             INCREMENT BY 1  -- 每次加几个               S ...

  3. 在同一session内创建, 修改和删除IBASE component

    Created by Jerry Wang, last modified on May 02, 2014 该report 实现了在同一session内: 创建新的Individual Object 创 ...

  4. SQL Server - 数据库(创建,修改管理-删除)-T-SQL 语句

    数据库 创建数据库 语法 CREATE DATABASE database_name ON(NAME = data_logical_file_name , FILENAME = 'data_os_fi ...

  5. sap 获取计划订单bapi_SAP 生产模块常用BAPI

    工艺路线 BAPI_ROUTING_CREATE创建工艺路线 BAPI_ROUTING_EXISTENCE_CHECK检查工艺路线是否存在 参考操作集 BAPI_REFSETOFOPERATIONS_ ...

  6. sap 获取计划订单bapi_【原创】2011.09.18 SAP 订单中修改订单净价

    本文以销售订单为例,说一下如何使用SAP预置的BAPI来更新销售订单(SD)的净价. 1.前提 首先需要了解一下销售订单所对应的表的关系: 订单抬头表:VBAK--订单行项目表:VBAP. 我们所要修 ...

  7. 生产订单组件新增 修改 删除

    如果CO_XT_COMPONENT_ADD缺少需要的字段 可以拷贝出来, 在ZCO_XT_COMPONENT_ADD 添加字段例如:I_TEST 和 I_TESTX 或者memory id传值 在22 ...

  8. 计划订单投放成生产任务单时修改生产任务单编号

    /* 计划订单投放成生产任务单时修改生产任务单编号 生产任务单编号 = 销售订单编号 + '-' + 生产任务单原单行号 + '(' + 物料代码 + ')' */ CREATE TRIGGER [d ...

  9. SAP生产订单创建、工序删除/增加、组件删除/增加、生产订单下达、采购订单创建

    2021年的时候在深圳光明区某企业做了一个项目:委外生产订单创建.因为委外的生产订单和当前企业的工序以及组件并不相同,所以需要对创建的生产订单的工序进行删除和增加,对组件进行删除和增加. 当时的业务程 ...

最新文章

  1. 在Linux系统下编译并执行C++程序
  2. 霍金 | 哥德尔和物理学的终结
  3. flask mysql项目模板渲染_[Flask] Flask问题集(后端模板渲染项目)
  4. python中文读音ndarray-Python开发:NumPy学习(一)ndarray数组
  5. 第一批 | Share·2015产品经理O2O论坛免费票发放啦!
  6. myisam数据表根据frm文件恢复数据表
  7. 【思维】Congestion Charging Zone
  8. (64)SPI外设驱动用户发送模块(三)(第13天)
  9. 嵌入式Linux内核优化裁剪
  10. 大规模虚拟化,舍我其谁?
  11. GitLab Docker 前端开发工具链
  12. 中亿验钞机升级_最前线|火山小视频升级为抖音火山版,抗衡快手火力更足了吗?...
  13. 浅析C#中的文件操作
  14. 抢椅子游戏java_抢椅子游戏作文(精选10篇)
  15. python测网速_python一键测试网速
  16. OSChina 周四乱弹 —— 不要生气!我不要生气!
  17. H3C设备组网故障之广播风暴篇
  18. scratch少儿编程第1课
  19. 迅捷路由器造成计算机无法上网,迅捷(FAST)300M无线路由器设置后不能上网怎么办?...
  20. 辛泓睿:数字资产化,万物皆可NFT吗?

热门文章

  1. 图数据库neo4j通过py2neo的查询操作
  2. STA - PVT、RC、OCV
  3. 推荐算法的Python实现——MF(矩阵分解)
  4. 亚马逊账号运营的坑,你知道吗?
  5. 字符串查找函数Strstr函数的实现(详细易懂)
  6. 听说,阔别千年的「神灯」又出现了…
  7. 手机常见接口(android和ios)
  8. 解释--全连接层输入大小固定
  9. Vue3 路由增加过度效果-淡入淡出
  10. SQL语句 打印输出 九九乘法表