看板控制范围创建与修改 PK01 PK02 BAPI

项目上很少用到此功能,记录一下。
PK01 创建BAPI BAPI_KANBANCC_CREATE
PK02 修改BAPI BAPI_KANBANCC_CHANGE
代码实例如下:

FORM FRM_EXPORT .

  DATA LS_BAPI1172_CREATE TYPE BAPI1172_CREATE .
  DATA LT_RETURN TYPE TABLE OF BAPIRET2 .
  DATA LS_RETURN TYPE BAPIRET2 .

  DATA LS_BAPI1172  TYPE BAPI1172_CONTROLCYCLE_CHANGE.
  DATA LS_BAPI1172X TYPE BAPI1172_CONTROLCYCLE_CHANGEX.

  DATA LV_MSG TYPE BAPI_MSG .
  DATA LV_KANBANCONTROLCYCLE  TYPE BAPI1172_LIST_ALL-KANBANCONTROLCYCLE .
  READ TABLE GT_ALV TRANSPORTING NO FIELDS WITH KEY LIGHT = GC_RED .
  IF SY-SUBRC = 0 .
    MESSAGE S012(ZPP_001) DISPLAY LIKE 'E' ."请先处理错误数据!
    RETURN .
  ENDIF .

  BREAK SUNHAO .
  LOOP AT GT_ALV ASSIGNING FIELD-SYMBOL(<FS_ALV>).
    CLEAR: <FS_ALV>-MESSAGE,LS_BAPI1172_CREATE,LT_RETURN,LS_BAPI1172,
    LS_BAPI1172X,LV_MSG .
    IF <FS_ALV>-LIGHT <> GC_YELLOW .
      LS_BAPI1172_CREATE-MATERIAL              = <FS_ALV>-MATNR .
      LS_BAPI1172_CREATE-PLANT                 = <FS_ALV>-WERKS .
      LS_BAPI1172_CREATE-SUPPLYAREA            = <FS_ALV>-PRVBE .
      LS_BAPI1172_CREATE-KANBAN_CT             = <FS_ALV>-BEHAZ .
      LS_BAPI1172_CREATE-KANBAN_QTY            = <FS_ALV>-BEHMG .
      LS_BAPI1172_CREATE-WHSENUMBER            = <FS_ALV>-LGNUM .
      LS_BAPI1172_CREATE-STGE_TYPE             = <FS_ALV>-LGTYP .
      LS_BAPI1172_CREATE-STGE_BIN              = <FS_ALV>-LGPLA .
      LS_BAPI1172_CREATE-STGE_LOC              = <FS_ALV>-LGORT .
      LS_BAPI1172_CREATE-STRATEGY_STOCK_TRANSF = <FS_ALV>-PKSTU .
      LS_BAPI1172_CREATE-CC_STATUS             = 'K' .
      CALL FUNCTION 'BAPI_KANBANCC_CREATE'
        EXPORTING
*         TESTRUN               =
          CONTROLCYCLENEW       = LS_BAPI1172_CREATE
        TABLES
*         EXTENSIONIN           =
          RETURN                = LT_RETURN.

    ELSE .
      LS_BAPI1172-SUPPLYAREA            = <FS_ALV>-PRVBE .
      LS_BAPI1172-KANBAN_CT             = <FS_ALV>-BEHAZ .
      LS_BAPI1172-KANBAN_QTY            = <FS_ALV>-BEHMG .
      LS_BAPI1172-WHSENUMBER            = <FS_ALV>-LGNUM .
      LS_BAPI1172-STGE_TYPE             = <FS_ALV>-LGTYP .
      LS_BAPI1172-STGE_BIN              = <FS_ALV>-LGPLA .
      LS_BAPI1172-STRATEGY_STOCK_TRANSF = <FS_ALV>-PKSTU .
      LS_BAPI1172-STGE_LOC              = <FS_ALV>-LGORT .

      LS_BAPI1172X-SUPPLYAREA            = 'X' .
      LS_BAPI1172X-KANBAN_CT             = 'X' .
      LS_BAPI1172X-KANBAN_QTY            = 'X' .
      LS_BAPI1172X-WHSENUMBER            = 'X' .
      LS_BAPI1172X-STGE_TYPE             = 'X' .
      LS_BAPI1172X-STGE_BIN              = 'X' .
      LS_BAPI1172X-STRATEGY_STOCK_TRANSF = 'X' .
      LS_BAPI1172X-STGE_LOC              = 'X' .

      CALL FUNCTION 'BAPI_KANBANCC_CHANGE'
        EXPORTING
*         TESTRUN                             =
*          CONTROLCYCLE_NUMBER                 = LV_KANBANCONTROLCYCLE
          MATERIAL                            = <FS_ALV>-MATNR
          PLANT                               = <FS_ALV>-WERKS
          SUPPLYAREA                          = <FS_ALV>-PRVBE
          CONTROL_CYCLE_CHANGE                = LS_BAPI1172
          CONTROL_CYCLE_CHANGEX               = LS_BAPI1172X
*         MATERIAL_EVG                        =
        TABLES
          RETURN                              = LT_RETURN
*         EXTENSIONIN                         =
*         EXTENSIONOUT                        =
*         CONTROLCYCLE_IN_TRIGGER_GROUP       =.
        .
    ENDIF .
    LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE CA 'EAX'.
      EXIT .
    ENDLOOP.
    IF SY-SUBRC <> 0 .
*      IF <FS_ALV>-LIGHT = GC_YELLOW .
*         UPDATE PKHD SET BEHAZ = <FS_ALV>-BEHAZ  WHERE PKNUM = <FS_ALV>-PKNUM .
*      ENDIF .
      <FS_ALV>-LIGHT = GC_GREEN .
      <FS_ALV>-MESSAGE = '导入成功!' .
      COMMIT WORK.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
    ELSE .
      <FS_ALV>-MESSAGE = '导入失败!' .
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE CA 'EAX'  .
        LV_MSG = LV_MSG && LS_RETURN-MESSAGE .
      ENDLOOP.
      <FS_ALV>-MESSAGE = '导入失败!' &&  LV_MSG.
      <FS_ALV>-LIGHT = GC_RED .
    ENDIF .
  ENDLOOP .
ENDFORM.

问题: 在使用BAPI BAPI_KANBANCC_CHANGE得时候,发现看字段BEHAZ板容器数 无法修改,本来想直接更新表,测试无法通过,后来跟到BAPI源代码中,SAP注释告诉我说要激活一个开关( following fields can only be changed if , EHP5E-switch is on.)
但我不知道是啥,PP业务也不知道是啥,为了实现功能,我直接加了个隐式增强。实现了字段BEHAZ的修改,增强位置如下图
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值