zoukankan      html  css  js  c++  java
  • 进销存价格查找

    通过

    MATNR MATNR CHAR 40 0 物料编号
    BWKEY BWKEY CHAR 4 0 估价范围

    找到CKMLHD-KALNR

    ps:mlit表也有成本估算编号KALNR。

    再通过CKMLHD-KALNR -> CKMLCR期间价格

    付:

    *&---------------------------------------------------------------------*
    *& Report ZMMR015E
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT zmmr015e.

    INCLUDE zmm015e_head.
    INCLUDE zmm015e_screen.
    INCLUDE zmm015e_form.

    AT SELECTION-SCREEN.
      PERFORM: frm_check_auth.

    START-OF-SELECTION.
      PERFORM frm_get_data.
      PERFORM frm_change_data.

    END-OF-SELECTION.
      PERFORM f_display_data.

    ZMM015E_HEAD包含文件:

    *&---------------------------------------------------------------------*
    *& 包含               ZMM015E_HEAD
    *&---------------------------------------------------------------------*
    TABLES:mara,matdoc.

    TYPESBEGIN OF sy_output,
             key1      TYPE matdoc-key1,
             key2      TYPE matdoc-key2,
             key3      TYPE matdoc-key3,
             key4      TYPE matdoc-key4,
             key5      TYPE matdoc-key5,
             key6      TYPE matdoc-key6,
             matnr     TYPE matdoc-matnr,      "物料
             maktx     TYPE makt-maktx,        "物料描述
             werks     TYPE matdoc-werks,
             lgort_sid TYPE matdoc-lgort_sid,  "仓位
             lgobe     TYPE t001l-lgobe,       "仓位描述
             konts     TYPE t030-konts,        "科目
             txt50     TYPE skat-txt50,        "科目描述
             mtart     TYPE mara-mtart,        "物料类型
             mtbez     TYPE t134t-mtbez,       "物料类型描述
             matkl     TYPE mara-matkl,        "物料组
             wgbez     TYPE t023t-wgbez,       "物料组描述
             extwg     TYPE mara-extwg,        "外部物料组
             meins     TYPE matdoc-meins,      "基本计量单位
             waers     TYPE matdoc-waers,      "货币码
             menge     TYPE matdoc-menge,      "数量
             gjahr     TYPE matdoc-gjahr,
             dmbtr     TYPE matdoc-dmbtr"zdanjia,      "金额
             mblnr     TYPE matdoc-mblnr,      "物料凭证编号
             lifnr_sid TYPE matdoc-lifnr_sid,  "供应商
             stock_qty TYPE matdoc-stock_qty,  "库存数量
             shkzg     TYPE matdoc-shkzg,      "借/贷标识
             CPUDT     TYPE matdoc-budat,      "会计凭证输入日期
             bwart     TYPE matdoc-bwart,

             zqcsl     TYPE matdoc-menge,      "期初数量
             zqcje     TYPE matdoc-dmbtr,      "期初金额
             zrksl     TYPE matdoc-menge,      "本期入库数量
             zrkje     TYPE matdoc-dmbtr,      "本期入库金额
             zcksl     TYPE matdoc-menge,      "本期出库数量
             zckje     TYPE matdoc-dmbtr,      "本期出口金额
             zqmsl     TYPE matdoc-menge,      "期末数量
             zqmje     TYPE matdoc-dmbtr,      "期末金额
             dmbtr2    TYPE p DECIMALS 8"zdanjia,      "金额

             slbox,
           END OF sy_output.

    DATA: gt_output  TYPE STANDARD TABLE OF sy_output,
          gs_output  TYPE sy_output,
          gt_output2 TYPE STANDARD TABLE OF sy_output,
          gs_output2 TYPE sy_output,
          gt_output3 TYPE STANDARD TABLE OF sy_output,
          gs_output3 TYPE sy_output.
    DATA: gs_layout   TYPE lvc_s_layo,
          gt_fieldcat TYPE lvc_t_fcat.
    DATA: lt_output  TYPE STANDARD TABLE OF sy_output,
          lt_output2 TYPE STANDARD TABLE OF sy_output.

    ZMM015E_SCREEN包含文件:

    *&---------------------------------------------------------------------*
    *& 包含               ZMM015E_SCREEN
    *&---------------------------------------------------------------------*
    SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME  TITLE TEXT-001.
    PARAMETERS:p_werks LIKE matdoc-werks DEFAULT '1000'.

    SELECT-OPTIONS: s_budat FOR matdoc-budat OBLIGATORY DEFAULT sy-datum,
                    s_lgort FOR matdoc-lgort_sid,
                    s_mtart FOR mara-mtart,
                    s_matkl FOR mara-matkl,
                    s_matnr FOR mara-matnr.

    SELECTION-SCREEN END OF BLOCK blk1.

    ZMM015E_FORM包含文件:

    *&---------------------------------------------------------------------*
    *& 包含               ZMM015E_FORM
    *&---------------------------------------------------------------------*
    *&---------------------------------------------------------------------*
    *& Form FRM_GET_DATA
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_get_data .
      DATA: p_datumh TYPE sy-datum,
            p_datuml TYPE sy-datum.
      READ TABLE s_budat INDEX 1.
      IF sy-subrc EQ 0.
        IF s_budat-high IS NOT INITIAL.
          p_datumh = s_budat-high.
          p_datuml = s_budat-low.
        ELSE.
          p_datumh = s_budat-low.
          p_datuml = s_budat-low.
        ENDIF.
      ENDIF.
      SELECT matdoc~key1
             matdoc~key2
             matdoc~key3
             matdoc~key4
             matdoc~key5
             matdoc~key6
             matdoc~matnr
             matdoc~werks
             matdoc~lgort_sid
             matdoc~meins
             matdoc~waers
             matdoc~menge
             matdoc~dmbtr
             matdoc~mblnr
             matdoc~lifnr_sid
             matdoc~stock_qty
             matdoc~shkzg
             matdoc~cpudt
             matdoc~gjahr
             matdoc~bwart
             mara~mtart "物料类型
             mara~matkl "
             mara~extwg
        INTO CORRESPONDING FIELDS OF TABLE gt_output2
        FROM matdoc JOIN mara ON matdoc~matnr EQ mara~matnr
       WHERE matdoc~werks EQ p_werks
         AND matdoc~matnr IN s_matnr
         AND matdoc~cpudt LE p_datumh
         AND matdoc~lgort IN s_lgort
         AND mara~matkl IN s_matkl
         AND mara~mtart IN s_mtart.

      lt_output[] = gt_output2[].
      SORT lt_output[] BY matnr.
      DELETE ADJACENT DUPLICATES FROM lt_output COMPARING matnr.

      CHECK lt_output[] IS NOT INITIAL.
    **通过 物料/工厂/评估类型->ckmlhd-kalnr
      SELECT belnr,kjahr,posnr,matnr,bwkey,bwtar,kalnr
        INTO TABLE @DATA(lt_mlit)
        FROM mlit
        FOR ALL ENTRIES IN @lt_output
        WHERE matnr = @lt_output-matnr
          AND bwkey EQ @p_werks.
      SORT lt_mlit[] BY matnr bwkey kalnr.
      DELETE ADJACENT DUPLICATES FROM lt_mlit[] COMPARING matnr bwkey kalnr.
      IF lt_mlit[] IS NOT INITIAL.
        SELECT kalnr,bdatj,poper,untper,curtp,peinh,vprsv,stprs,pvprs,salk3
          INTO TABLE @DATA(lt_ckmlcr)
          FROM ckmlcr
          FOR ALL ENTRIES IN @lt_mlit
          WHERE kalnr = @lt_mlit-kalnr.
        SORT lt_ckmlcr[] BY kalnr bdatj poper.
      ENDIF.

    *按上次物料凭证对应的FI凭证,计算的单价,作为最新的单价,来计算没有价格的物料凭证
      SORT gt_output2[] BY matnr werks lgort_sid cpudt.
    *  SORT gt_output2[] BY matnr werks budat.
      DATA: ls_indmbtr TYPE sy_output.
    *        lt_indmbtr TYPE sy_output.
      LOOP AT gt_output2 ASSIGNING FIELD-SYMBOL(<ls_input>).

        IF <ls_input>-dmbtr EQ 0.
    *      IF ls_indmbtr-matnr EQ <ls_input>-matnr AND ls_indmbtr-werks EQ <ls_input>-werks AND ls_indmbtr-dmbtr2 NE 0 AND ls_indmbtr-lgort_sid = <ls_input>-lgort_sid AND <ls_input>-cpudt+0(6) EQ ls_indmbtr-cpudt+0(6).
    *        <ls_input>-dmbtr2 = ls_indmbtr-dmbtr2.
    *        <ls_input>-dmbtr = abs( <ls_input>-dmbtr2 * <ls_input>-stock_qty ).
    *      ELSE.
          READ TABLE lt_mlit INTO DATA(ls_mlitWITH KEY matnr = <ls_input>-matnr
                                                         bwkey = <ls_input>-werks.
          IF sy-subrc EQ 0.
            READ TABLE lt_ckmlcr INTO DATA(ls_ckmlcrWITH KEY kalnr = ls_mlit-kalnr
                                                               bdatj = <ls_input>-gjahr
                                                               poper = <ls_input>-cpudt+4(2BINARY SEARCH.
            IF sy-subrc EQ 0.
              IF ls_ckmlcr-peinh IS NOT INITIAL.
                IF ls_ckmlcr-vprsv EQ 'S'"标准
                  <ls_input>-dmbtr2 = ls_ckmlcr-stprs / ls_ckmlcr-peinh.
                ELSE.
                  <ls_input>-dmbtr2 = ls_ckmlcr-pvprs / ls_ckmlcr-peinh.
                ENDIF.
              ELSE.
    *          IF ls_ckmlcr-vprsv EQ 'S'. "标准
    *            <ls_input>-dmbtr = ls_ckmlcr-stprs.
    *          ELSE.
    *            <ls_input>-dmbtr = ls_ckmlcr-pvprs.
    *          ENDIF.
              ENDIF.
            ENDIF.
          ENDIF.
          <ls_input>-dmbtr abs( <ls_input>-dmbtr2 * <ls_input>-stock_qty ).
    *      ENDIF.
    *   ELSE.
    *      CLEAR ls_indmbtr.
    *      ls_indmbtr-matnr = <ls_input>-matnr.
    *      ls_indmbtr-werks = <ls_input>-werks.
    *      ls_indmbtr-lgort_sid = <ls_input>-lgort_sid.
    *      ls_indmbtr-cpudt = <ls_input>-cpudt.
    *      ls_indmbtr-dmbtr2 = abs( <ls_input>-dmbtr / <ls_input>-stock_qty ).
        ENDIF.

      ENDLOOP.

      LOOP AT gt_output2 INTO gs_output2.
        gs_output-matnr = gs_output2-matnr.
        gs_output-werks = gs_output2-werks.
        gs_output-lgort_sid = gs_output2-lgort_sid.
        gs_output-lifnr_sid = gs_output2-lifnr_sid.
        gs_output-mtart = gs_output2-mtart.
        gs_output-matkl = gs_output2-matkl.
        gs_output-extwg = gs_output2-extwg.
        gs_output-meins = gs_output2-meins.
        gs_output-waers = gs_output2-waers.
        IF gs_output2-cpudt IN s_budat[].
          IF gs_output2-stock_qty > 0.
            gs_output-zrksl = gs_output2-stock_qty."本期入库数量
            gs_output-zrkje = gs_output2-dmbtr.
          ELSE.
            gs_output-zcksl = gs_output2-stock_qty."本期出库数量
            gs_output-zckje - gs_output2-dmbtr.
          ENDIF.
        ELSE.
          gs_output-zqcsl = gs_output2-stock_qty"期初数量
          gs_output-zqcje = gs_output2-dmbtr.
        ENDIF.
        gs_output-zqmsl = gs_output2-stock_qty"期末数量
        gs_output-zqmje = gs_output2-dmbtr.

        COLLECT gs_output INTO gt_output[].
        CLEAR: gs_output,gs_output2.
      ENDLOOP.

    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form FRM_CHANGE_DATA
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_change_data .

      CHECK gt_output2[] IS NOT INITIAL.
    **库存价值科目
      SELECT *
        INTO TABLE @DATA(lt_t030)
        FROM t030
       WHERE ktopl EQ 'HL00'
         AND ktosl EQ 'BSX'.
      SORT lt_t030[] BY bklas.


    **物料描述
      SELECT *
        INTO TABLE @DATA(lt_makt)
        FROM makt
         FOR ALL ENTRIES IN @lt_output
       WHERE spras EQ @sy-langu
         AND matnr EQ @lt_output-matnr.
      SORT lt_makt[] BY matnr.

    **评估分类

      SELECT matnr,bwkey,bwtar,vprsv,peinh,verpr,stprs,bklas
        INTO TABLE @DATA(lt_mbew)
        FROM mbew
         FOR ALL ENTRIES IN @lt_output
       WHERE matnr EQ @lt_output-matnr
         AND bwkey EQ @p_werks.
      SORT lt_mbew[] BY matnr bwkey.

    *  lt_output2[] = gt_output2[].
    *  SORT lt_output2[] BY matnr werks lgort_sid.
    *  DELETE ADJACENT DUPLICATES FROM lt_output2[] COMPARING matnr werks lgort_sid.
    *  DELETE lt_output2[] WHERE dmbtr EQ 0
    *                         OR menge EQ 0.

    **仓位描述
      SELECT werks,
             lgort,          lgobe     

    INTO TABLE @DATA(lt_t001l)     
    FROM t001l.   
    SORT lt_t001l[] BY werks lgort.
    **科目描述   
    SELECT *     
    INTO TABLE @DATA(lt_skat)     
    FROM skat    
    WHERE spras EQ @sy-langu      
    AND ktopl EQ 'HL00'.   
    SORT lt_skat[] BY saknr.

    **物料类型描述   
    SELECT *     
    INTO TABLE @DATA(lt_t134t)     
    FROM t134t    
    WHERE spras EQ @sy-langu.   
    SORT lt_t134t[] BY mtart.

    **物料组描述   
    SELECT *     
    INTO TABLE @DATA(lt_t023t)     
    FROM t023t    
    WHERE spras EQ @sy-langu.   
    SORT lt_t023t[] BY matkl.   

    LOOP AT gt_output ASSIGNING FIELD-SYMBOL(<gs_output>).
    **根据评估分类查找科目     

    READ TABLE lt_mbew INTO DATA(ls_mbewWITH KEY matnr = <gs_output>-matnr                                                    bwkey 
    = <gs_output>-werks BINARY SEARCH.
    *    IF sy-subrc EQ 0.
    *    IF ls_mbew-vprsv EQ 'S'. "MM03成本 = 标准价格
    *      IF ls_mbew-peinh IS NOT INITIAL.
    *    <gs_output>-dmbtr = ls_mbew-stprs." / ls_mbew-peinh.
    *      ENDIF.
    *    ELSEIF ls_mbew-vprsv EQ 'V'."MM03成本 = 移动平均价/周期价格
    *      IF ls_mbew-peinh IS NOT INITIAL.
    *        <gs_output>-dmbtr = ls_mbew-verpr." / ls_mbew-peinh.
    *      ENDIF.
    *    ENDIF.     

    READ TABLE lt_t030 INTO DATA(ls_t030WITH KEY bklas = ls_mbew-bklas BINARY SEARCH.     
    IF sy-subrc EQ 0.       <gs_output>
    -konts = ls_t030-konts"科目     
    ENDIF.
    *    ENDIF.
    **仓位描述     
    READ TABLE lt_t001l INTO DATA(ls_t001lWITH KEY werks = <gs_output>-werks                                                      lgort 
    = <gs_output>-lgort_sid BINARY SEARCH.     
    IF sy-subrc EQ 0.       <gs_output>
    -lgobe = ls_t001l-lgobe.     
    ENDIF.
    **科目描述     
    READ TABLE lt_skat INTO DATA(ls_skatWITH KEY saknr = <gs_output>-konts BINARY SEARCH.     
    IF sy-subrc EQ 0.       <gs_output>
    -txt50 = ls_skat-txt50.     
    ENDIF.
    **物料描述     
    READ TABLE lt_makt INTO DATA(ls_maktWITH KEY matnr = <gs_output>-matnr BINARY SEARCH.     
    IF sy-subrc EQ 0.       <gs_output>
    -maktx = ls_makt-maktx.     
    ENDIF.
    ***物料类型,物料组,外部物料组
    *        READ TABLE lt_output INTO DATA(ls_output) with KEY matnr = <gs_output>-matnr BINARY SEARCH.
    *        IF sy-subrc eq 0.
    *    <gs_output>-mtart = ls_output-mtart.
    *    <gs_output>-matkl = ls_output-matkl.
    *    <gs_output>-extwg = ls_output-extwg.
    *        ENDIF.
    **物料类型描述     
    READ TABLE lt_t134t INTO DATA(ls_t134tWITH KEY mtart = <gs_output>-mtart BINARY SEARCH.     
    IF sy-subrc EQ 0.       <gs_output>
    -mtbez = ls_t134t-mtbez.     
    ENDIF.
    **物料组描述     
    READ TABLE lt_t023t INTO DATA(ls_t023tWITH KEY matkl = <gs_output>-matkl BINARY SEARCH.     
    IF sy-subrc EQ 0.       <gs_output>
    -mtbez = ls_t134t-mtbez.     
    ENDIF.
    **单价
    *    READ TABLE lt_output2 INTO DATA(ls_output2) WITH KEY matnr     = <gs_output>-matnr
    *                                                         werks     = <gs_output>-werks
    *                                                         lgort_sid = <gs_output>-lgort_sid BINARY SEARCH.
    *    IF sy-subrc EQ 0.
    *      <gs_output>-dmbtr = ls_output2-dmbtr / ls_output2-menge.
    *    ENDIF.
    **期初金额/本期入库金额/本期出库金额/期末金额
    *    IF ls_mbew-peinh IS NOT INITIAL.
    *      <gs_output>-zqcje = <gs_output>-zqcsl * <gs_output>-dmbtr / ls_mbew-peinh.
    *      <gs_output>-zrkje = <gs_output>-zrksl * <gs_output>-dmbtr / ls_mbew-peinh.
    *      <gs_output>-zckje = <gs_output>-zcksl * <gs_output>-dmbtr / ls_mbew-peinh.
    *      <gs_output>-zqmje = <gs_output>-zqmsl * <gs_output>-dmbtr / ls_mbew-peinh.
    *      <gs_output>-dmbtr = <gs_output>-dmbtr / ls_mbew-peinh.
    *    ENDIF.     
    CLEAR ls_mbew.   
    ENDLOOP.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form F_DISPLAY_DATA
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM f_display_data .   
    PERFORM f_set_layout.   
    PERFORM f_set_fieldcat.   
    PERFORM f_alv_display TABLES gt_output.
    ENDFORM.

    FORM f_set_layout.   
    CLEAR: gs_layout.   gs_layout
    -box_fname 'SLBOX'.   gs_layout
    -zebra 'X'.   gs_layout
    -cwidth_opt 'X'.
    *  gs_layout-ctab_fname = 'CELLCOLOR'.
    ENDFORM.
    FORM f_set_fieldcat.   
    CLEAR: gt_fieldcat[].   
    DATA: ls_fieldcat TYPE lvc_s_fcat.   
    DEFINE set_fieldcat.     
    CLEAR: ls_fieldcat.     ls_fieldcat
    -fieldname = &1.     ls_fieldcat
    -ref_field = &2.     ls_fieldcat
    -ref_table = &3.     ls_fieldcat
    -convexit  = &4.     ls_fieldcat
    -do_sum    = &5.     ls_fieldcat
    -seltext   = &6.     ls_fieldcat
    -scrtext_l = &6.     ls_fieldcat
    -scrtext_m = &6.     ls_fieldcat
    -scrtext_s = &6.     ls_fieldcat
    -coltext   = &6.     
    APPEND ls_fieldcat TO gt_fieldcat.   
    END-OF-DEFINITION.
    *显示内容   set_fieldcat 
    'MATNR'      'MATNR'      'MATDOC' ''      ''  '物料'.   set_fieldcat 
    'MAKTX'      'MAKTX'      'MAKT'   ''      ''  '物料描述'.   set_fieldcat 
    'WERKS'      'WERKS'      'MATDOC' ''      ''  '工厂'.   set_fieldcat 
    'LGORT_SID'  'LGORT_SID'  'MATDOC' ''      ''  '仓位'.   set_fieldcat 
    'LGOBE'      'LGOBE'      'T001L'  ''      ''  '仓位描述'.   set_fieldcat 
    'KONTS'      'KONTS'      'T030'   ''      ''  '科目代码'.   set_fieldcat 
    'TXT50'      'TXT50'      'SKAT'   ''      ''  '科目描述'.   set_fieldcat 
    'LIFNR_SID'  'LIFNR_SID'  'MATDOC' ''      ''  '供应商'.   set_fieldcat 
    'MTART'      'MTART'      'MARA'   ''      ''  '物料类型'.   set_fieldcat 
    'MTBEZ'      'MTBEZ'      'T134T'  ''      ''  '物料类型描述'.   set_fieldcat 
    'MATKL'      'MATKL'      'MARA'   ''      ''  '物料组'.   set_fieldcat 
    'WGBEZ'      'WGBEZ'      'T023T'  ''      ''  '物料组描述'.   set_fieldcat 
    'EXTWG'      'EXTWG'      'MARA'   ''      ''  '外部物料组'.   set_fieldcat 
    'MEINS'      'MEINS'      'MATDOC' ''      ''  '基本计量单位'.   set_fieldcat 
    'WAERS'      'WAERS'      'MATDOC' ''      ''  '货币码'.
    *  SET_FIELDCAT 'MENGE'      'MENGE'      'MATDOC' '' ''  '数量'.
    *  SET_FIELDCAT 'DMBTR'      'DMBTR'      'MATDOC' '' ''  '金额'.   set_fieldcat 
    'MBLNR'      'MBLNR'      'MATDOC' ''      ''  '物料凭证编号'.   set_fieldcat 
    'ZQCSL'      'MENGE'      'MATDOC' 'QTYCH' ''  '期初数量'.   set_fieldcat 
    'ZQCJE'      'DMBTR'      'MATDOC' ''      ''  '期初金额'.   set_fieldcat 
    'ZRKSL'      'MENGE'      'MATDOC' 'QTYCH' ''  '本期入库数量'.   set_fieldcat 
    'ZRKJE'      'DMBTR'      'MATDOC' ''      ''  '本期入库金额'.   set_fieldcat 
    'ZCKSL'      'MENGE'      'MATDOC' 'QTYCH' ''  '本期出库数量'.   set_fieldcat 
    'ZCKJE'      'DMBTR'      'MATDOC' ''      ''  '本期出库金额'.   set_fieldcat 
    'ZQMSL'      'MENGE'      'MATDOC' 'QTYCH' ''  '期末数量'.   set_fieldcat 
    'ZQMJE'      'DMBTR'      'MATDOC' ''      ''  '期末金额'.
















    ENDFORM.
    FORM f_alv_display TABLES it_table.   
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'     
    EXPORTING       i_callback_program      
    = sy-repid
    *     i_callback_pf_status_set = 'F_SET_PF_STATUS'       i_callback_user_command 
    'F_USER_COMMAND'       is_layout_lvc           
    = gs_layout       it_fieldcat_lvc         
    = gt_fieldcat       i_save                  
    'U'     
    TABLES       t_outtab                
    = it_table     
    EXCEPTIONS       program_error           
    1       
    OTHERS                  2.   
    IF sy-subrc <> 0.   
    ENDIF.
    ENDFORM.
    *-----------------------------------------------------------------------* *
    *-----------------------------------------------------------------------*
    FORM f_set_pf_status USING rt_extab TYPE slis_t_extab.
    *  SET PF-STATUS 'STD'.
    ENDFORM.
    *-----------------------------------------------------------------------* *
    *-----------------------------------------------------------------------*
    FORM f_user_command USING r_ucomm LIKE sy-ucomm  rs_selfield 
    TYPE slis_selfield.   
    PERFORM f_check_change_data.   
    CASE r_ucomm.     
    WHEN 'LIST'.     

    WHEN '&IC1'."双击事件       
    READ TABLE gt_output INTO gs_output INDEX rs_selfield-tabindex.       
    IF sy-subrc EQ 0.         
    CLEAR gt_output3[].         gt_output3[] 
    = gt_output2[].         
    DELETE gt_output3[] WHERE werks NE gs_output-werks                                
    OR lgort_sid NE gs_output-lgort_sid.         
    PERFORM f_display_data2.       

    ENDIF.   
    ENDCASE.   
    PERFORM f_refresh_alv.
    ENDFORM.
    *-----------------------------------------------------------------------* *
    *-----------------------------------------------------------------------*
    FORM f_check_change_data.   
    DATA: lo_grid TYPE REF TO cl_gui_alv_grid.   
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'     
    IMPORTING       e_grid 
    = lo_grid.   lo_grid
    ->check_changed_data).
    ENDFORM.
    *-----------------------------------------------------------------------* *
    *-----------------------------------------------------------------------*
    FORM f_refresh_alv.   
    DATA: lo_grid      TYPE REF TO cl_gui_alv_grid,         ls_is_stable 
    TYPE lvc_s_stbl.   
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'     
    IMPORTING       e_grid 
    = lo_grid.   ls_is_stable
    -col 'X'.   ls_is_stable
    -row 'X'.   lo_grid
    ->refresh_table_display(   
    EXPORTING   is_stable 
    = ls_is_stable   
    EXCEPTIONS   finished 
    1   
    OTHERS ).   
    IF sy-subrc <> 0.   
    ENDIF.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form F_DISPLAY_DATA2
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM f_display_data2 .   
    PERFORM f_set_layout.   
    PERFORM f_set_fieldcat3.   
    PERFORM f_alv_display3 TABLES gt_output3.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form F_ALV_DISPLAY3
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *      -->P_GT_OUTPUT  text
    *&---------------------------------------------------------------------*
    FORM f_alv_display3  TABLES it_table.   
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'     
    EXPORTING       i_callback_program      
    = sy-repid
    *     i_callback_pf_status_set = 'F_SET_PF_STATUS'       i_callback_user_command 
    'F_USER_COMMAND3'       is_layout_lvc           
    = gs_layout       it_fieldcat_lvc         
    = gt_fieldcat       i_save                  
    'U'     
    TABLES       t_outtab                
    = it_table     
    EXCEPTIONS       program_error           
    1       
    OTHERS                  2.   
    IF sy-subrc <> 0.   
    ENDIF.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form F_SET_FIELDCAT3
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM f_set_fieldcat3 .   
    CLEAR: gt_fieldcat[].   
    DATA: ls_fieldcat TYPE lvc_s_fcat.   
    DEFINE set_fieldcat.     
    CLEAR: ls_fieldcat.     ls_fieldcat
    -fieldname = &1.     ls_fieldcat
    -ref_field = &2.     ls_fieldcat
    -ref_table = &3.     ls_fieldcat
    -convexit  = &4.     ls_fieldcat
    -do_sum    = &5.     ls_fieldcat
    -seltext   = &6.     ls_fieldcat
    -scrtext_l = &6.     ls_fieldcat
    -scrtext_m = &6.     ls_fieldcat
    -scrtext_s = &6.     ls_fieldcat
    -coltext   = &6.     
    APPEND ls_fieldcat TO gt_fieldcat.   
    END-OF-DEFINITION.
    *显示内容   set_fieldcat 
    'MATNR'      'MATNR'      'MATDOC' '' ''  '物料'.
    *  set_fieldcat 'MAKTX'      'MAKTX'      'MAKT'   '' ''  '物料描述'.   set_fieldcat 
    'WERKS'      'WERKS'      'MATDOC' '' ''  '工厂'.   set_fieldcat 
    'LGORT_SID'  'LGORT_SID'  'MATDOC' '' ''  '仓位'.   set_fieldcat 
    'MEINS'      'MEINS'      'MATDOC' '' ''  '单位'.   set_fieldcat 
    'WAERS'      'WAERS'      'MATDOC' '' ''  '货币'.   set_fieldcat 
    'CPUDT'      'CPUDT'      'MATDOC' '' ''  '输入日期'.   set_fieldcat 
    'DMBTR2'     ''            ''      '' ''  '单价'.   set_fieldcat 
    'DMBTR'      'DMBTR'      'MATDOC' '' ''  '金额'.
    *  set_fieldcat 'LGOBE'      'LGOBE'      'T001L'  '' ''  '仓位描述'.
    *  set_fieldcat 'KONTS'      'KONTS'      'T030'   '' ''  '科目代码'.
    *  set_fieldcat 'TXT50'      'TXT50'      'SKAT'   '' ''  '科目描述'.   set_fieldcat 
    'LIFNR_SID'  'LIFNR_SID'  'MATDOC' '' ''  '供应商'.   set_fieldcat 
    'STOCK_QTY'  'STOCK_QTY'  'MATDOC' 'QTYCH' ''  '数量'.   set_fieldcat 
    'SHKZG'      'SHKZG'      'MATDOC' '' ''  '借贷标识'.   set_fieldcat 
    'BWART'      'BWART'      'MATDOC' '' ''  '移动类型'.   set_fieldcat 
    'MTART'      'MTART'      'MARA'   '' ''  '物料类型'.
    *  set_fieldcat 'MTBEZ'      'MTBEZ'      'T134T'  '' ''  '物料类型描述'.   set_fieldcat 
    'MATKL'      'MATKL'      'MARA'   '' ''  '物料组'.
    *  set_fieldcat 'WGBEZ'      'WGBEZ'      'T023T'  '' ''  '物料组描述'.   set_fieldcat 
    'EXTWG'      'EXTWG'      'MARA'   '' ''  '外部物料组'.   set_fieldcat 
    'MEINS'      'MEINS'      'MATDOC' '' ''  '基本计量单位'.   set_fieldcat 
    'WAERS'      'WAERS'      'MATDOC' '' ''  '货币码'.   set_fieldcat 
    'MBLNR'      'MBLNR'      'MATDOC' '' ''  '物料凭证编号'.

    ENDFORM.

    FORM f_user_command3 USING r_ucomm LIKE sy-ucomm  rs_selfield 
    TYPE slis_selfield.   
    PERFORM f_check_change_data.   
    CASE r_ucomm.     
    WHEN 'LIST'.     

    WHEN '&IC1'."双击事件       
    READ TABLE gt_output3 INTO gs_output3 INDEX rs_selfield-tabindex.       
    IF sy-subrc EQ 0.
    *        SET PARAMETER ID 'BLN' FIELD gs_output-BELNR.
    *        SET PARAMETER ID 'BUK' FIELD gs_output-RBUKRS.
    *        SET PARAMETER ID 'GJR' FIELD gs_output-GJAHR.
    *        CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.         
    CALL FUNCTION 'MIGO_DIALOG'           
    EXPORTING             i_action            
    'A04'             i_refdoc            
    'R02'             i_mblnr             
    = gs_output3-mblnr             i_mjahr             
    = gs_output3-gjahr           
    EXCEPTIONS             illegal_combination 
    1             
    OTHERS              2.         
    IF sy-subrc <> 0.
    * Implement suitable error handling here         
    ENDIF.       
    ENDIF.   
    ENDCASE.   
    PERFORM f_refresh_alv.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form FRM_CHECK_AUTH
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_check_auth .   
    SELECT werks     
    INTO TABLE @DATA(lt_t001w)     
    FROM t001w    
    WHERE werks EQ @p_werks.   
    LOOP AT lt_t001w INTO DATA(ls_t001).     
    AUTHORITY-CHECK OBJECT 'ZHL_AUTHOR'         
    ID 'ZWERKS' FIELD ls_t001-werks.     
    IF sy-subrc <> 0.       
    MESSAGE '无该工厂查询权限' TYPE 'E'.       
    STOP.     
    ENDIF.   
    ENDLOOP.
    ENDFORM.

  • 相关阅读:
    Linux 下curl模拟Http 的get or post请求
    ShopNC学习笔记(转)
    (转) shopnc数据库操作
    Mysql开发规范
    长连接、短连接、长轮询和WebSocket
    一个支付宝没有安装app时看不到web网页,无法支付的问题
    MVVM设计模式
    c中的scanf和printf
    import和class关键字的区别
    oc中的注释
  • 原文地址:https://www.cnblogs.com/chaguoguo/p/14195425.html
Copyright © 2011-2022 走看看