SAP ABAP-删除工序示例代码

简介: ABAP-删除工序示例代码

SELECT * INTO TABLE LT_AFVC FROM afvc

    FOR ALL ENTRIES IN GT_DATA

    WHERE aufpl = GT_DATA-aufpl AND APLZL = GT_DATA-APLZL.


    DATA: GT_DATA_DEL TYPE TABLE OF TYP_DATA.

    CLEAR:GT_DATA_DEL[].

    LOOP AT GT_DATA ASSIGNING <GS_DATA> WHERE  CHECKBOX = 'X'.

      APPEND <GS_DATA> TO GT_DATA_DEL.

    ENDLOOP.


    LOOP AT GT_DATA_DEL ASSIGNING <GS_DATA>.

     AT NEW AUFNR.

*       ON CHANGE OF <GS_DATA>-AUFNR.

       CLEAR:it_afvgkeys_to_delete[].

       IF <GS_DATA>-AUFNR <> ''.

         SELECT SINGLE aufpl INTO l_aufpl

                 FROM afko

                 WHERE aufnr = <GS_DATA>-AUFNR.

         UPDATE afko SET atrkz = ''

                 WHERE aufnr = <GS_DATA>-AUFNR

                 AND atrkz = 'U'.

         COMMIT WORK AND WAIT.

       ENDIF.

*      ENDON.

    ENDAT.

     DEFINE MODIFY_ALV.

       MODIFY &1 FROM &2 TRANSPORTING &3 WHERE AUFNR = <GS_DATA>-aufnr and checkbox = 'X'.

     END-OF-DEFINITION.

     CLEAR it_afvgkeys_to_delete[].

     READ TABLE LT_AFVC INTO LS_AFVC WITH  KEY aufpl = <GS_DATA>-aufpl  APLZL = <GS_DATA>-APLZL.

     IF SY-SUBRC = 0.

       MOVE-CORRESPONDING LS_AFVC TO ls_afvgdget.

       ls_afvgdget-aufnrd = <GS_DATA>-AUFNR.

       APPEND ls_afvgdget to it_afvgkeys_to_delete.

     ENDIF.

     AT END OF AUFNR.

       IF it_afvgkeys_to_delete[] IS NOT INITIAL.

            PERFORM order_read IN PROGRAM ('SAPLCOXT')

                             USING <GS_DATA>-AUFNR

                             CHANGING cs_bapireturn e_error.

            IF e_error IS NOT INITIAL .

              <GS_DATA>-MSG = '读取订单失败'.

              MODIFY GT_DATA FROM <GS_DATA> TRANSPORTING MSG WHERE AUFNR = <GS_DATA>-aufnr and checkbox = 'X'.

              CONTINUE.

            ELSE.

             "调用删除

              CLEAR e_error.

              CLEAR ct_bapireturn[].

              CALL FUNCTION 'CO_XT_OPERATIONS_DELETE'            "删除工序

              EXPORTING

                it_afvgkeys_to_delete = it_afvgkeys_to_delete

*              I_DEL_COMPONENTS      = 'X'

                i_del_physical        = 'X'

              IMPORTING

                e_error_occurred      = e_error

              TABLES

                ct_bapireturn         = ct_bapireturn

              EXCEPTIONS

                delete_failed         = 1

                OTHERS                = 2.

              IF sy-subrc <> 0.

                MESSAGE ID SY-msgid TYPE sy-MSGTY NUMBER SY-msgNO INTO <GS_DATA>-MSG

                                 WITH sy-MSGV1 sy-MSGV2 sy-MSGV3 sy-MSGV4.

                MODIFY_ALV GT_DATA <GS_DATA> MSG.        "更新内表

                CONTINUE.

              ENDIF.

            IF e_error IS NOT INITIAL .

              LOOP AT ct_bapireturn INTO cs_bapireturn WHERE TYPE = 'E' OR TYPE = 'A'.

              CONCATENATE <GS_DATA>-MSG  cs_bapireturn-MESSAGE ';' INTO <GS_DATA>-MSG.

              ENDLOOP.

              MODIFY_ALV GT_DATA <GS_DATA> MSG.           "更新内表

              CONTINUE.

            ELSE.

              CLEAR e_error.

              CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'

              IMPORTING

                e_error_occurred = e_error

                es_bapireturn    = cs_bapireturn.

              IF e_error IS NOT INITIAL .

                CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.       "错误回滚

                LOOP AT ct_bapireturn INTO cs_bapireturn WHERE TYPE = 'E' OR TYPE = 'A'.

                  CONCATENATE <GS_DATA>-MSG  cs_bapireturn-MESSAGE ';' INTO <GS_DATA>-MSG.

                ENDLOOP.

                MODIFY_ALV GT_DATA <GS_DATA> MSG.          "更新内表

                CONTINUE.

              ELSE.

                CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'     "成功提交

                EXPORTING

                  WAIT = 'X'.

                  <GS_DATA>-MSG = '删除成功'.

                  MODIFY_ALV GT_DATA <GS_DATA> MSG.        "更新内表

                  CONTINUE.

              ENDIF.

           ENDIF.

           ENDIF.

       ENDIF.

     ENDAT.

    ENDLOOP.

目录
相关文章
SAP ABAP 程序调用设置成后台作业模式
ABAP 程序调用设置成后台作业模式
504 0
SAP ABAP 内表排序 动态字段排序
对于动态内表排序引用ABAP_SORTORDER_TAB
288 0
|
SQL 设计模式 前端开发
【置顶】SAP ABAP开发实战——从入门到精通系列目录
本文章为SAP ABAP开发实战——从入门到精通系列的目录以及关于该教程的后续写作计划表
1549 0
【置顶】SAP ABAP开发实战——从入门到精通系列目录
|
SQL
SAP ABAP-OPENSQL-数值函数简介
S4中针对OPENSQL新提供一些函数
139 0
|
SQL
SAP ABAP-OPENSQL-字符串函数介绍
S4中SQL新语法字符串函数
204 0
|
SQL
SAP ABAP-OPENSQL-日期/时间戳函数
S4提供针对OPENSQL一些新的SQL函数调用,本文展示相关函数的使用
632 0
SAP ABAP 检查事务码权限
检查用户是否有自开发事务码的权限
153 0
|
BI
SAP ABAP在线预览文档对象的开发实现
应用场景:有些定制化开发(报表/功能增强等)完成之后,客户需要将其操作手册或者相关文档放在某个报表的初始画面,供实际操作者在线查阅,当然这个功能也同样类似于模板的下载,这里就以在线预览(直接打开)为例进行说明。
224 0
SAP ABAP字符串拼接保留空格
字符串操作保留空格
1056 0
|
BI 数据处理 数据库
SAP ABAP——SAP简介(一)【SAP发展历程】
本文是SAP开发从入门到精通系列教程的开端。详细介绍了SAP公司的前世今生和发展历程,对于我们了解SAP公司和其产品具有重要的指示作用,也为我们了解其产品提供一定思路
748 0
SAP ABAP——SAP简介(一)【SAP发展历程】