20 марта 2017

Чтение длинных текстов

Рассмотрим чтение длинных текстов на примере текста к основным данным материала (текстовый объект - MATERIAL, идентификатор - GRUN). Чтение длинного текста осуществляется с помощью функционального модуля READ_TEXT.

19 марта 2017

Прибавить/отнять N лет/месяцев/дней к дате

Чтобы прибавить к дате некоторое количество лет/месяцев/дней, используем функциональный модуль RP_CALC_DATE_IN_INTERVAL.

  DATA: lv_days(2)    TYPE n,
        lv_months(2)  TYPE n,
        lv_years(2)   TYPE n,
        lv_date       TYPE d.

  " Прибавить к текущей дате 6 месяцев

  lv_months = '6'.

  CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
    EXPORTING
      date            = sy-datum
      days            = lv_days
      months          = lv_months
*     signum          = '+'
      years           = lv_years
    IMPORTING
      calc_date       = lv_date.

Чтобы отнять от даты некоторое количество лет/месяцев/дней используем signum = '-'.

Последний день месяца

Для определения последнего дня месяца используем функциональный модуль BKK_GET_MONTH_LASTDAY.

  DATA: lv_date TYPE d.

  CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
    EXPORTING
      i_date        = sy-datum
    IMPORTING
      e_date        = lv_date.

  " lv_date содержит последний день текущего месяца

Чтение признаков партии и материала

Для чтения признаков партии используем функциональный модуль BAPI_OBJCL_GETDETAIL.

  DATA: lv_objkey       TYPE bapi1003_key-object,
        lt_num          TYPE TABLE OF bapi1003_alloc_values_num,
        lt_char         TYPE TABLE OF bapi1003_alloc_values_char,
        lt_curr         TYPE TABLE OF bapi1003_alloc_values_curr,
        lt_return       TYPE TABLE OF bapiret2.

  FIELD-SYMBOLS: <lfs_char>       LIKE LINE OF lt_char.

  CONCATENATE p_matnr p_werks p_charg INTO lv_objkey.

  " или

  lv_objkey+0(18) = p_matnr.
  lv_objkey+18(4) = p_werks.
  lv_objkey+22(10) = p_charg.

  CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
    EXPORTING
      objectkey       = lv_objkey
      objecttable     = 'MCHA'
      classnum        = 'ZCLASS01'
      classtype       = '022'
    TABLES
      allocvaluesnum  = lt_num
      allocvalueschar = lt_char
      allocvaluescurr = lt_curr
      return          = lt_return.

  READ TABLE lt_char ASSIGNING <lfs_char> WITH KEY charact = 'Z_PARAM01'.
  IF sy-subrc EQ 0.
    " <lfs_char>-value_char содержит значение признака Z_PARAM01
  ENDIF.

Для чтения признаков материала используем objecttable = 'MARA'.