MEK1/VK11创建条件记录BAPI

总结三种创建条件记录的BAPI,均可为SD或者MM创建对应的条件记录,只需更改对应条件表信息及key的信息即可。

1.BAPI_PRICES_CONDITIONS

2.IDOC_INPUT_COND_A

3.RV_CONDITION_COPY、RV_CONDITION_SAVE、RV_CONDITION_RESET

本例为MM创建条件记录,使用定价类型Z001,定价表为A991,定价所需字段如下:

BAPI_PRICES_CONDITIONS 的使用方式

BAPI通过TABLE_NO参数确定价格信息写入哪张表,通过VARKEY参数将KEY值写入对应字段,以A991为例,根据标准程序对应的传值逻辑可以看到程序是如何将VARKEY赋值给各个定价表的key值字段的(以RV13+表名去查找对应的标准程序,BAPI中会根据表名调用对应程序的DB_UPDATE子例程)。

*&---------------------------------------------------------------------*
*& Report ZTEST_MEK1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_MEK1.

DATA:
  LT_CONDCT  TYPE STANDARD TABLE OF BAPICONDCT,
  LS_CONDCT  TYPE BAPICONDCT,
  LT_CONDHD  TYPE STANDARD TABLE OF BAPICONDHD,
  LS_CONDHD  TYPE BAPICONDHD,
  LT_CONDIT  TYPE STANDARD TABLE OF BAPICONDIT,
  LS_CONDIT  TYPE BAPICONDIT,
  LT_CONDQS  TYPE STANDARD TABLE OF BAPICONDQS,
  LS_CONDQS  TYPE BAPICONDQS,
  LT_CONDVS  TYPE STANDARD TABLE OF BAPICONDVS,
  LS_CONDVS  TYPE BAPICONDVS,
  LT_RETURN  TYPE STANDARD TABLE OF BAPIRET2,
  LS_RETURN  TYPE BAPIRET2,
  LT_KNUMHS  TYPE STANDARD TABLE OF BAPIKNUMHS,
  LS_KNUMHS  TYPE BAPIKNUMHS,
  LT_INITIAL TYPE STANDARD TABLE OF CND_MEM_INITIAL,
  LS_INITIAL TYPE CND_MEM_INITIAL.

DATA:
  LS_A991 TYPE A991.

*定价信息KEY字段
LS_A991-LIFNR = '1000000005'.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
  EXPORTING
    INPUT        = '10000000309'
  IMPORTING
    OUTPUT       = LS_A991-MATNR
  EXCEPTIONS
    LENGTH_ERROR = 1
    OTHERS       = 2.
LS_A991-EKORG = '1000'.
LS_A991-WERKS = '100A'.
LS_A991-EKKOL = 'M'.
LS_A991-EAN11 = '20210721'.
LS_A991-KFRST = ''.

LS_CONDCT-OPERATION  = '009'.                    "009创建 004更改 003删除
LS_CONDCT-COND_USAGE = 'A'.                      "定价用途
LS_CONDCT-TABLE_NO   = '991'.                    "定价表
LS_CONDCT-APPLICATIO = 'M'.                      "M:采购 V:销售
LS_CONDCT-COND_TYPE  = 'Z001'.                   "条件类型
LS_CONDCT-VALID_FROM = '20210719'.               "有效期开始
LS_CONDCT-VALID_TO   = '20220719'.               "有效期结束
MOVE LS_A991+9(81) TO LS_CONDCT-VARKEY_LONG.     "定价表KEY信息组合
LS_CONDCT-COND_NO    = '$000000001'.             "创建时该字段第一位需要为'$',更新时为条件信息记录编号
APPEND LS_CONDCT TO LT_CONDCT.

LS_CONDHD-OPERATION  = '009'.
LS_CONDHD-CREATED_BY = SY-UNAME.
LS_CONDHD-CREAT_DATE = SY-DATUM.
LS_CONDHD-COND_USAGE = 'A'.
LS_CONDHD-TABLE_NO   = '991'.
LS_CONDHD-APPLICATIO = 'M'.
LS_CONDHD-COND_TYPE  = 'Z001'.
LS_CONDHD-VALID_FROM = '20210719'.
LS_CONDHD-VALID_TO   = '20220719'.
MOVE LS_A991+9(81) TO LS_CONDHD-VARKEY_LONG.
LS_CONDHD-COND_NO    = '$000000001'.
APPEND LS_CONDHD TO LT_CONDHD.

LS_CONDIT-OPERATION  = '009'.
LS_CONDIT-APPLICATIO = 'M'.
LS_CONDIT-COND_TYPE  = 'Z001'.
LS_CONDIT-COND_NO    = '$000000001'.
LS_CONDIT-COND_COUNT = 01.                       "必须为01
LS_CONDIT-SCALETYPE  = 'A'.
LS_CONDIT-CALCTYPCON = 'C'.
LS_CONDIT-COND_VALUE = '6.00'.
LS_CONDIT-CONDCURR   = 'JPY'.
LS_CONDIT-COND_P_UNT = '1'.
LS_CONDIT-COND_UNIT  = 'ST'.
LS_CONDIT-CONDCURREN = 'JPY'.
LS_CONDIT-COND_UNIT  = 'ST'.
LS_CONDIT-CURRENCY   = 'JPY'.
APPEND LS_CONDIT TO LT_CONDIT.

*条件记录创建
CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
* EXPORTING
*   PI_INITIALMODE             = ' '
*   PI_BLOCKNUMBER             =
*   PI_PHYSICAL_DELETION       =
  TABLES
    TI_BAPICONDCT  = LT_CONDCT
    TI_BAPICONDHD  = LT_CONDHD
    TI_BAPICONDIT  = LT_CONDIT
    TI_BAPICONDQS  = LT_CONDQS
    TI_BAPICONDVS  = LT_CONDVS
    TO_BAPIRET2    = LT_RETURN
    TO_BAPIKNUMHS  = LT_KNUMHS
    TO_MEM_INITIAL = LT_INITIAL
  EXCEPTIONS
    UPDATE_ERROR   = 1
    OTHERS         = 2.

LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE CA 'EAX'.
ENDLOOP.

IF SY-SUBRC <> 0.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
   EXPORTING
     WAIT          = 'X'.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.

CL_DEMO_OUTPUT=>DISPLAY( LT_RETURN ).

 如果不知道MEK1前台创建的记录定价底表是哪个,可以按照如下方式去查看

 

 

 以上为创建条件记录的方式,下面看修改和删除;

比如先创建一个条件记录的有效区间为(价格信息在KONH及KONP表中):

2021/07/21~9999/12/31,价格为5 CNY

现在新增一条有效区间为:

2023/07/21~2023/12/31,价格为6 CNY

那么理论上最终结果在A991定价表中应该有三条,分别为:

2021/07/21~2023/07/20,价格为5 CNY

2023/07/21~2023/12/31,价格为6 CNY

2024/01/01~9999/12/31,价格为5 CNY

所以这种场景下,使用BAPI_PRICES_CONDITIONS去更新定价时,应该操作三次数据:

2021/07/21~9999/12/31,价格为5 CNY => 2021/07/21~2023/07/20,价格为5 CNY   更新

2023/07/21~2023/12/31,价格为6 CNY  新增

2024/01/01~9999/12/31,价格为5 CNY  新增

新增传值参考上文,更新传值demo如下:

LS_CONDCT-OPERATION   = '004'.                   "009创建 004更改 003删除
LS_CONDCT-COND_USAGE  = 'A'.                     "定价用途
LS_CONDCT-TABLE_NO    = '991'.                   "定价表
LS_CONDCT-APPLICATIO  = 'M'.                     "M:采购 V:销售
LS_CONDCT-COND_TYPE   = 'ZNN1'.                  "条件类型
LS_CONDCT-VALID_FROM  = '20210721'.              "有效期开始
LS_CONDCT-VALID_TO    = '20231231'.              "有效期结束
LS_CONDCT-VARKEY_LONG = LS_A991+9(81).           "定价表KEY信息组合
LS_CONDCT-COND_NO     = '0000010964'.            "更新时为条件信息记录编号
APPEND LS_CONDCT TO LT_CONDCT.

LS_CONDHD-OPERATION   = '004'.
LS_CONDHD-CREATED_BY  = SY-UNAME.
LS_CONDHD-CREAT_DATE  = SY-DATUM.
LS_CONDHD-COND_USAGE  = 'A'.
LS_CONDHD-TABLE_NO    = '991'.
LS_CONDHD-APPLICATIO  = 'M'.
LS_CONDHD-COND_TYPE   = 'ZNN1'.
LS_CONDHD-VALID_FROM  = '20210721'.
LS_CONDHD-VALID_TO    = '20231231'.
LS_CONDHD-VARKEY_LONG = LS_A991+9(81).
LS_CONDHD-COND_NO     = '0000010964'.
APPEND LS_CONDHD TO LT_CONDHD.

LS_CONDIT-OPERATION  = '004'.
LS_CONDIT-APPLICATIO = 'M'.
LS_CONDIT-COND_TYPE  = 'ZNN1'.
LS_CONDIT-COND_NO    = '0000010964'.
LS_CONDIT-COND_COUNT = 01.                       "必须为01
LS_CONDIT-SCALETYPE  = 'A'.
LS_CONDIT-CALCTYPCON = 'C'.
LS_CONDIT-COND_VALUE = '14.00'.
LS_CONDIT-CONDCURR   = 'CNY'.
LS_CONDIT-COND_P_UNT = '1'.
LS_CONDIT-COND_UNIT  = 'ST'.
LS_CONDIT-CONDCURREN = 'CNY'.
LS_CONDIT-COND_UNIT  = 'ST'.
LS_CONDIT-CURRENCY   = 'CNY'.
APPEND LS_CONDIT TO LT_CONDIT.

另外一种场景,可能会对某个区间的条件记录做删除标记,传值demo如下:

LS_CONDCT-OPERATION   = '003'.                    "009创建 004更改 003删除
LS_CONDCT-COND_USAGE  = 'A'.                      "定价用途
LS_CONDCT-TABLE_NO    = '991'.                    "定价表
LS_CONDCT-APPLICATIO  = 'M'.                      "M:采购 V:销售
LS_CONDCT-COND_TYPE   = 'Z001'.                   "条件类型
LS_CONDCT-VALID_FROM  = '20210721'.               "有效期开始
LS_CONDCT-VALID_TO    = '99991231'.               "有效期结束
LS_CONDCT-VARKEY_LONG = LS_A991+9(81).            "定价表KEY信息组合
LS_CONDCT-COND_NO     = '0000252967'.             "更新时为条件信息记录编号
APPEND LS_CONDCT TO LT_CONDCT.

LS_CONDHD-OPERATION   = '003'.
LS_CONDHD-CREATED_BY  = SY-UNAME.
LS_CONDHD-CREAT_DATE  = SY-DATUM.
LS_CONDHD-COND_USAGE  = 'A'.
LS_CONDHD-TABLE_NO    = '991'.
LS_CONDHD-APPLICATIO  = 'M'.
LS_CONDHD-COND_TYPE   = 'Z001'.
LS_CONDHD-VALID_FROM  = '20210721'.
LS_CONDHD-VALID_TO    = '99991231'.
LS_CONDHD-VARKEY_LONG = LS_A991+9(81).
LS_CONDHD-COND_NO     = '0000252967'.
APPEND LS_CONDHD TO LT_CONDHD.

LS_CONDIT-OPERATION  = '003'.
LS_CONDIT-APPLICATIO = 'M'.
LS_CONDIT-COND_TYPE  = 'Z001'.
LS_CONDIT-COND_NO    = '0000252967'.
LS_CONDIT-COND_COUNT = 01.                       "必须为01
LS_CONDIT-SCALETYPE  = 'A'.
LS_CONDIT-CALCTYPCON = 'C'.
LS_CONDIT-COND_VALUE = '14.00'.
LS_CONDIT-CONDCURR   = 'CNY'.
LS_CONDIT-COND_P_UNT = '1'.
LS_CONDIT-COND_UNIT  = 'ST'.
LS_CONDIT-CONDCURREN = 'CNY'.
LS_CONDIT-COND_UNIT  = 'ST'.
LS_CONDIT-CURRENCY   = 'CNY'.
LS_CONDIT-INDIDELETE = 'X'.                      "删除标记
APPEND LS_CONDIT TO LT_CONDIT.

IDOC_INPUT_COND_A 的使用方式

该函数只支持创建模式,会自动针对于有效期区间去做条件记录的拆分,比如Key值相同的情况下,先创建一条有效区间为2021/07/21~9999/12/31的记录,再创建一条2031/01/01~2024/12/13的记录,会自动拆分产生三条记录,有一点要注意的是,debug时候发现底层varkey映射的时候,针对物料字段,S4系统新的长度为40位,但是字段映射时候是只截取18位的,按照旧的物料字段长度去截取的,所以传值时需要注意。

*&---------------------------------------------------------------------*
*& Report ZTEST_MEK1_IDOC
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_MEK1_IDOC.

DATA:
  LV_INPUT_METHOD       TYPE BDWFAP_PAR-INPUTMETHD,
  LV_MASS_PROCESSING    TYPE BDWFAP_PAR-MASS_PROC,
  LT_IDOC_CONTRL        TYPE STANDARD TABLE OF EDIDC,
  LS_IDOC_CONTRL        TYPE EDIDC,
  LT_IDOC_DATA          TYPE STANDARD TABLE OF EDIDD,
  LS_IDOC_DATA          TYPE EDIDD,
  LT_IDOC_STATUS        TYPE STANDARD TABLE OF BDIDOCSTAT,
  LS_IDOC_STATUS        TYPE BDIDOCSTAT,
  LT_RETURN_VARIABLES   TYPE STANDARD TABLE OF BDWFRETVAR,
  LT_SERIALIZATION_INFO TYPE STANDARD TABLE OF BDI_SER.

DATA:
  LS_KOMG TYPE E1KOMG,
  LS_KONH TYPE E1KONH,
  LS_KONP TYPE E1KONP,
  LS_A991 TYPE A991.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
  EXPORTING
    INPUT        = '10000000001'
  IMPORTING
    OUTPUT       = LS_A991-MATNR
  EXCEPTIONS
    LENGTH_ERROR = 1
    OTHERS       = 2.

LS_A991-LIFNR = '1000000005'.
LS_A991-EKORG = '1000'.
LS_A991-WERKS = '100A'.
LS_A991-EKKOL = 'M'.
LS_A991-EAN11 = 'test0721'.
LS_A991-KFRST = ''.

**********************************************************************IDOC HEADER
LS_IDOC_CONTRL-DOCTYP = 'COND_A04'.              "IDOC类型
LS_IDOC_CONTRL-MESTYP = 'COND_A'.                "消息类型
LS_IDOC_CONTRL-DOCREL = '700'.                   "版本

*LS_IDOC_CONTRL-RCVPRT = 'LS'.                    "接收方伙伴类型
*LS_IDOC_CONTRL-RCVPRN = 'SAPSD1'.                "接收方伙伴编号
*LS_IDOC_CONTRL-RCVPOR = 'SD1CLNT300'.            "接收方逻辑系统
*
*LS_IDOC_CONTRL-SNDPRT = 'LS'.                    "发送方伙伴类型
*LS_IDOC_CONTRL-SNDPRN = 'SAPSD1'.                "发送方伙伴编号
*LS_IDOC_CONTRL-SNDPOR = 'SD1CLNT300'.            "发送方逻辑系统
APPEND LS_IDOC_CONTRL TO LT_IDOC_CONTRL.

**********************************************************************KOMG
LS_IDOC_DATA-SEGNUM = '1'.                       "层级
LS_IDOC_DATA-HLEVEL = '1'.                       "层级
LS_IDOC_DATA-SEGNAM = 'E1KOMG'.                  "KEY数据

LS_KOMG-KVEWE      = 'A'.                        "定价用途
LS_KOMG-KOTABNR    = '991'.                      "定价表
LS_KOMG-KAPPL      = 'M'.                        "M:采购 V:销售
LS_KOMG-KSCHL      = 'Z001'.                     "条件类型
LS_KOMG-VAKEY      = |1000000005{ LS_A991-MATNR }{ LS_A991+59(31) }|. "定价表KEY信息组合   注意:物料的key只能放18位进去

LS_IDOC_DATA-SDATA = LS_KOMG.
APPEND LS_IDOC_DATA TO LT_IDOC_DATA.
CLEAR:
  LS_KOMG,
  LS_IDOC_DATA.

**********************************************************************KONH
LS_IDOC_DATA-SEGNUM = '2'.                       "层级
LS_IDOC_DATA-HLEVEL = '2'.                       "层级
LS_IDOC_DATA-SEGNAM = 'E1KONH'.                  "KONH

LS_KONH-KNUMH = '$000000001'.                    "创建
LS_KONH-DATAB = '20210721'.                      "有效期开始
LS_KONH-DATBI = '99991231'.                      "有效期结束

LS_IDOC_DATA-SDATA = LS_KONH.
APPEND LS_IDOC_DATA TO LT_IDOC_DATA.
CLEAR:
  LS_KOMG,
  LS_IDOC_DATA.

**********************************************************************KONP
LS_IDOC_DATA-SEGNUM = '3'.                       "层级
LS_IDOC_DATA-HLEVEL = '3'.                       "层级
LS_IDOC_DATA-SEGNAM = 'E1KONP'.                  "KONP

LS_KONP-KSCHL = 'Z001'.                          "条件类型
LS_KONP-KBETR = '500'.                           "价格
LS_KONP-KRECH = 'C'.                             "条件计算类型
LS_KONP-STFKZ = 'A'.
LS_KONP-KPEIN = '1'.                             "单位
LS_KONP-KMEIN = 'PCE'.                           "物料单位,例单位为PC,这里赋值为T006-MSEHI = 'ST' 去取得的ISOCODE,即PCE
LS_KONP-KONWA = 'JPY'.                           "货币
LS_KONP-LOEVM_KO = 'X'.                          "要删除时只需要打上该标记,其余字段传值不变

LS_IDOC_DATA-SDATA = LS_KONP.

LS_IDOC_DATA-SDATA = LS_KONP.
APPEND LS_IDOC_DATA TO LT_IDOC_DATA.
CLEAR:
  LS_KOMG,
  LS_IDOC_DATA.

CALL FUNCTION 'IDOC_INPUT_COND_A'
  EXPORTING
    INPUT_METHOD          = LV_INPUT_METHOD
    MASS_PROCESSING       = LV_MASS_PROCESSING
* IMPORTING
*   WORKFLOW_RESULT       =
*   APPLICATION_VARIABLE  =
*   IN_UPDATE_TASK        =
*   CALL_TRANSACTION_DONE =
  TABLES
    IDOC_CONTRL           = LT_IDOC_CONTRL
    IDOC_DATA             = LT_IDOC_DATA
    IDOC_STATUS           = LT_IDOC_STATUS
    RETURN_VARIABLES      = LT_RETURN_VARIABLES
    SERIALIZATION_INFO    = LT_SERIALIZATION_INFO
  EXCEPTIONS
    WRONG_FUNCTION_CALLED = 1
    OTHERS                = 2.

IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

CL_DEMO_OUTPUT=>NEW( )->WRITE_DATA( LT_IDOC_STATUS
                     )->WRITE_DATA( LT_RETURN_VARIABLES
                     )->DISPLAY( ).

 RV_CONDITION_COPY、RV_CONDITION_SAVE、RV_CONDITION_RESET 的使用方式

该方法会自动拆分创建条件记录,底层调用的是跟前台一样的逻辑,IDOC_INPUT_COND_A函数里面调用的就是该方法,所以也会自动拆分条件记录。

创建demo如下,需要注意的是,KEEP_OLD_RECORDS参数需要打上 'X' ,因为实际测试中发现假如上一条记录为更新删除标记,后面调用此方法创建出来的记录都会打上删除标记(即KONP-LOEVM_KO = 'X'),KEEP_OLD_RECORDS设置为 'X可以保证创建出来的新纪录不会打上删除标记。

*&---------------------------------------------------------------------*
*& Report ZTEST_MEK1_BAPI
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_MEK1_BAPI.

DATA:
  LS_KEY_FIELDS   TYPE KOMG,
  LT_COPY_RECORDS TYPE TABLE OF KOMV,
  LS_COPY_RECORDS TYPE KOMV,
  LT_COPY_STAFFEL TYPE TABLE OF CONDSCALE,
  LS_COPY_STAFFEL TYPE CONDSCALE,
  LT_KNUMH_COMP   TYPE TABLE OF KNUMH_COMP,
  LS_KNUMH_COMP   TYPE KNUMH_COMP,
  LS_KOMK         TYPE KOMK,
  LS_KOMP         TYPE KOMP,
  LV_RECORD       TYPE KONH-KNUMH.

" key fields
LS_KEY_FIELDS-LIFNR = '1000000006'.
LS_KEY_FIELDS-EKORG = '1000'.
LS_KEY_FIELDS-MATNR = '000000010000000017'.
LS_KEY_FIELDS-WERKS = '100A'.
LS_KEY_FIELDS-EKKOL = 'S'.
LS_KEY_FIELDS-EAN11 = 'TESTBAPI_9'.
LS_KEY_FIELDS-KFRST = ''.

CLEAR LS_COPY_RECORDS.
" condtion fields
LS_COPY_RECORDS-KOPOS = '01'.
LS_COPY_RECORDS-KSCHL = 'Z001'.
LS_COPY_RECORDS-KAPPL = 'M'.
LS_COPY_RECORDS-WAERS = 'JPY'.
LS_COPY_RECORDS-KMEIN = 'ST'.
LS_COPY_RECORDS-KBETR = '30'.
LS_COPY_RECORDS-KPEIN = '1'.
LS_COPY_RECORDS-KZBZG = 'C'.
LS_COPY_RECORDS-STFKZ = 'A'.
APPEND LS_COPY_RECORDS TO LT_COPY_RECORDS.
CLEAR LS_COPY_RECORDS.

CALL FUNCTION 'RV_CONDITION_RESET'.

CALL FUNCTION 'RV_CONDITION_COPY'
  EXPORTING
    APPLICATION                 = 'M'
    CONDITION_TABLE             = '991'
    CONDITION_TYPE              = 'Z001'
    DATE_FROM                   = '20210721'
    DATE_TO                     = '99991231'
    KEY_FIELDS                  = LS_KEY_FIELDS
    MAINTAIN_MODE               = 'A'              "A:创建  B:更新
    OVERLAP_CONFIRMED           = 'X'
    USED_BY_IDOC                = 'X'
    KEEP_OLD_RECORDS            = 'X'
  IMPORTING
    E_KOMK                      = LS_KOMK
    E_KOMP                      = LS_KOMP
    NEW_RECORD                  = LV_RECORD
  TABLES
    COPY_RECORDS                = LT_COPY_RECORDS
    COPY_STAFFEL                = LT_COPY_STAFFEL

  EXCEPTIONS
    ENQUEUE_ON_RECORD           = 1
    INVALID_APPLICATION         = 2
    INVALID_CONDITION_NUMBER    = 3
    INVALID_CONDITION_TYPE      = 4
    NO_AUTHORITY_EKORG          = 5
    NO_AUTHORITY_KSCHL          = 6
    NO_AUTHORITY_VKORG          = 7
    NO_SELECTION                = 8
    TABLE_NOT_VALID             = 9
    NO_MATERIAL_FOR_SETTLEMENT  = 10
    NO_UNIT_FOR_PERIOD_COND     = 11
    NO_UNIT_REFERENCE_MAGNITUDE = 12
    INVALID_CONDITION_TABLE     = 13
    OTHERS                      = 14.

IF SY-SUBRC = 0.
  " commit and get condition NO.
  CALL FUNCTION 'RV_CONDITION_SAVE'
    TABLES
      KNUMH_MAP = LT_KNUMH_COMP.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT = 'X'.

  CALL FUNCTION 'RV_CONDITION_RESET'.

  READ TABLE LT_KNUMH_COMP INTO LS_KNUMH_COMP INDEX 1.
  IF SY-SUBRC = 0 AND LS_KNUMH_COMP-KNUMH_NEW IS NOT INITIAL.
    MESSAGE LS_KNUMH_COMP-KNUMH_NEW TYPE 'S'.
  ELSE.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ELSE.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

更新demo如下,需要注意的是,更新时需要指定LS_COPY_RECORDS-KNUMH为要更新的条件记录编号、传入参数的SELECTION_DATE设置为起始日期、MAINTAIN_MODE设置为 'B';

另外,如果需要更新删除标记字段,除了设置LS_COPY_RECORDS-LOEVM_KO = 'X',还需要将KEEP_OLD_RECORDS = '',否则不会更新删除标记字段。

*&---------------------------------------------------------------------*
*& Report ZTEST_MEK1_BAPI
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_MEK1_BAPI.

DATA:
  LS_KEY_FIELDS   TYPE KOMG,
  LT_COPY_RECORDS TYPE TABLE OF KOMV,
  LS_COPY_RECORDS TYPE KOMV,
  LT_COPY_STAFFEL TYPE TABLE OF CONDSCALE,
  LS_COPY_STAFFEL TYPE CONDSCALE,
  LT_KNUMH_COMP   TYPE TABLE OF KNUMH_COMP,
  LS_KNUMH_COMP   TYPE KNUMH_COMP,
  LS_KOMK         TYPE KOMK,
  LS_KOMP         TYPE KOMP,
  LV_RECORD       TYPE KONH-KNUMH.

" key fields
LS_KEY_FIELDS-LIFNR = '1000000006'.
LS_KEY_FIELDS-EKORG = '1000'.
LS_KEY_FIELDS-MATNR = '000000010000000017'.
LS_KEY_FIELDS-WERKS = '100A'.
LS_KEY_FIELDS-EKKOL = 'S'.
LS_KEY_FIELDS-EAN11 = 'TESTBAPI_9'.
LS_KEY_FIELDS-KFRST = ''.

CLEAR LS_COPY_RECORDS.
" condtion fields
LS_COPY_RECORDS-KNUMH = '0000253006'.
LS_COPY_RECORDS-KOPOS = '01'.
LS_COPY_RECORDS-KSCHL = 'Z001'.
LS_COPY_RECORDS-KAPPL = 'M'.
LS_COPY_RECORDS-WAERS = 'JPY'.
LS_COPY_RECORDS-KMEIN = 'ST'.
LS_COPY_RECORDS-KBETR = '30'.
LS_COPY_RECORDS-KPEIN = '1'.
LS_COPY_RECORDS-KZBZG = 'C'.
LS_COPY_RECORDS-STFKZ = 'A'.
LS_COPY_RECORDS-LOEVM_KO = 'X'.
APPEND LS_COPY_RECORDS TO LT_COPY_RECORDS.
CLEAR LS_COPY_RECORDS.

CALL FUNCTION 'RV_CONDITION_RESET'.

CALL FUNCTION 'RV_CONDITION_COPY'
  EXPORTING
    APPLICATION                 = 'M'
    CONDITION_TABLE             = '991'
    CONDITION_TYPE              = 'Z001'
    DATE_FROM                   = '20210721'
    DATE_TO                     = '99991231'
    KEY_FIELDS                  = LS_KEY_FIELDS
    MAINTAIN_MODE               = 'B'
    OVERLAP_CONFIRMED           = 'X'
    USED_BY_IDOC                = 'X'
*    KEEP_OLD_RECORDS            = 'X'
    SELECTION_DATE              = '20230721'
  IMPORTING
    E_KOMK                      = LS_KOMK
    E_KOMP                      = LS_KOMP
    NEW_RECORD                  = LV_RECORD
  TABLES
    COPY_RECORDS                = LT_COPY_RECORDS
    COPY_STAFFEL                = LT_COPY_STAFFEL

  EXCEPTIONS
    ENQUEUE_ON_RECORD           = 1
    INVALID_APPLICATION         = 2
    INVALID_CONDITION_NUMBER    = 3
    INVALID_CONDITION_TYPE      = 4
    NO_AUTHORITY_EKORG          = 5
    NO_AUTHORITY_KSCHL          = 6
    NO_AUTHORITY_VKORG          = 7
    NO_SELECTION                = 8
    TABLE_NOT_VALID             = 9
    NO_MATERIAL_FOR_SETTLEMENT  = 10
    NO_UNIT_FOR_PERIOD_COND     = 11
    NO_UNIT_REFERENCE_MAGNITUDE = 12
    INVALID_CONDITION_TABLE     = 13
    OTHERS                      = 14.

IF SY-SUBRC = 0.
  " commit and get condition NO.
  CALL FUNCTION 'RV_CONDITION_SAVE'
    TABLES
      KNUMH_MAP = LT_KNUMH_COMP.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT = 'X'.

  CALL FUNCTION 'RV_CONDITION_RESET'.

  READ TABLE LT_KNUMH_COMP INTO LS_KNUMH_COMP INDEX 1.
  IF SY-SUBRC = 0 AND LS_KNUMH_COMP-KNUMH_NEW IS NOT INITIAL.
    MESSAGE LS_KNUMH_COMP-KNUMH_NEW TYPE 'S'.
  ELSE.
*    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ELSE.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

以上。

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,烧录imx8mp的Android系统可以按照以下步骤进行: 1. 首先,校准DDR,确保没有问题。如果校准DDR后没有问题,可以将文件拷贝到对应的目录下。在《Android_User’s_Guide.pdf》的第50页有对应的说明,请仔细阅读。关键的两步是: - 将`${MY_ANDROID}/vendor/nxp/fsl-proprietary/uboot-firmware/imx8q/board-imx8qxp.c`拷贝到`scfw_export_mx8qx_b0/platform/board/mx8qx_mek/board.c` - 将`build_mx8qx_b0/scfw_tcm.bin`拷贝到`${MY_ANDROID}/vendor/nxp/fsl-proprietary/uboot-firmware/imx8q/mx8qx-scfw-tcm.bin` 2. 使用uuu + bootloader(等同于uuu + SDP)进行烧录。可以下载适用于imx6/imx7/imx8qxp的bootloader,并将其下载到内部RAM中。然后使用以下命令进行烧录: ``` uuu uboot.imx uuu flash.bin ``` 3. 最后,使用内建的烧录脚本来完成烧录过程。 请注意,以上步骤仅供参考,具体的烧录过程可能因为不同的环境和要求而有所不同。建议参考相关文档或咨询相关技术支持以获取更准确的指导。 #### 引用[.reference_title] - *1* [NXP(imx8qxp)系列DDR校准以及android镜像烧录](https://blog.csdn.net/weixin_51178981/article/details/123995811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [imx8 uuu烧录](https://blog.csdn.net/weixin_39951217/article/details/110260043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeveloperMrMeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值