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.

目录
相关文章
|
2月前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
|
2月前
|
存储 安全 数据库
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
|
2月前
|
安全 API 数据库
SAP ABAP OData 中 Function import 的概念介绍
SAP ABAP OData 中 Function import 的概念介绍
|
2月前
|
SQL 负载均衡 监控
SAP ABAP DBSQL_SQL_ERROR 错误
SAP ABAP DBSQL_SQL_ERROR 错误
|
2月前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
|
2月前
|
JSON 应用服务中间件 API
使用 ABAP 代码消费 SAP 系统的 OData 服务
使用 ABAP 代码消费 SAP 系统的 OData 服务
|
2月前
|
SQL 监控 Oracle
SAP ABAP 系统错误 Return value of the database layer SQL dbsl rc 99
SAP ABAP 系统错误 Return value of the database layer SQL dbsl rc 99
|
2月前
|
存储 前端开发 Linux
在 SAP ABAP 系统里访问 FTP 服务器
在 SAP ABAP 系统里访问 FTP 服务器
|
2月前
|
存储 前端开发 应用服务中间件
使用 SAP ABAP 执行 FTP 操作
使用 SAP ABAP 执行 FTP 操作