1. 程式人生 > >批次特性值 日期讀取

批次特性值 日期讀取

使用者有一需求:

   有一道工序庫存完工後,需要停放兩天才能使用;

  考慮到這停放中不需要計劃人工干預,只要上道工序完工後存放兩天即可;

 計劃員需要查詢這種型別庫存, 使用者提出,中間不需要計劃員下單專門 做一個存放工序;

 該型別產品已經用了批次,我提議用批次特性來解決;建立一個類:包括日期、時間特性;

 使用者可以根據這個特性去查庫存的時間;

  一切很順利,可是在我常用報表中(自己開發的報表),需要體現這個日期,時間時,發現特性值的數值,按正規模式讀取來根本不是正確的數值;

搞了一天,還是不行; 後來查閱資料一個功能QSS0_FLTP_TO_CHAR_CONVERSION' 

  form

  get_charg_type3
  using  matnr type matnr
         charg type charg_d
         werks type  werks_d
        charact type char30
  changing   ntime like mkpf-CPUTM  .

  data:r_e_objek type objnum,
       r_e_obtab type tabelle,
       r_e_klart type klassenart,
       r_e_class type klasse_d.

  data: allocvaluesnum type
 standard table of bapi1003_alloc_values_num
  with header line,
        allocvalueschar type standard table of
        bapi1003_alloc_values_char with header line,
        allocvaluescurr type standard table of
        bapi1003_alloc_values_curr with header line,
       return type standard table of bapiret2.
data
 s like CHA_CLASS_VIEW-SOLLWERT.
  call function 'VB_BATCH_2_CLASS_OBJECT'
    exporting
      i_matnr       =  matnr
      i_charg       =  charg
      i_werks       = werks
    importing
      e_objek       = r_e_objek
      e_obtab       = r_e_obtab
      e_klart       = r_e_klart
      e_class       = r_e_class.

    call function 'BAPI_OBJCL_GETDETAIL'
      exporting
        objectkey              = r_e_objek
        objecttable            = r_e_obtab
        classnum               = r_e_class
        classtype              = r_e_klart
*       KEYDATE                = SY-DATUM
*       UNVALUATED_CHARS       = ’ ’
*       LANGUAGE               = SY-LANGU
*     IMPORTING
*       STATUS                 =
*       STANDARDCLASS          =
      tables
        allocvaluesnum         =  allocvaluesnum
        allocvalueschar        = allocvalueschar
        allocvaluescurr        =  allocvaluescurr
        return                 =  return
              .

    loop at allocvaluesnum.
     if allocvaluesnum-CHARACT = 'I_TIME'.
      "   ntime  = allocvaluesnum-VALUE_FROM.

      CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'
       EXPORTING
          i_number_of_digits       = 0
        i_fltp_value             = allocvaluesnum-VALUE_FROM
        i_value_not_initial_flag = 'X'
         i_screen_fieldlength     = 16
       IMPORTING
          e_char_field             = s.

     endif.
    endloop.
    CONDENSE s.

   ntime = s.

endform.