初学abap 总结2

来源:互联网 发布:js延时函数 编辑:程序博客网 时间:2024/05/17 09:07

Sap补0函数:

 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

        EXPORTING

              input  = qmtab1-zqmnum

        IMPORTING

              output = qmtab1-zqmnum.

去掉0函数:

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

              EXPORTING

                input  = qmtab1-zqmnum

              IMPORTING

                output = qmtab1-zqmnum.

 

 

自定义的字段实现模糊查找(参考程序ZPROINFO02):

DATA: itab LIKE zinfo01 OCCURS 0 WITH HEADER LINE.

 

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-b01..

PARAMETERS:  chengxu LIKE zinfo01-zprom .   "程序名称

PARAMETERS: bbname LIKE zinfo01-zrname .    "报表名称

*SELECT-OPTIONS:  bbname FOR zinfo01-zrname .    "报表名称

PARAMETERS:  syfw LIKE zinfo01-zfw .       "适用范围

PARAMETERS:  jysm LIKE zinfo01-zsm .      "简要说明

SELECTION-SCREEN END OF BLOCK b1.

 

CONCATENATE '%' chengxu '%' INTO chengxu.

CONCATENATE '%' bbname '%' INTO bbname.

CONCATENATE '%' syfw '%' INTO syfw.

CONCATENATE '%' jysm '%' INTO jysm.

SELECT * INTO CORRESPONDING FIELDS OF TABLE itab

      FROM zinfo01

      WHERE zprom LIKE  chengxu AND

            zrname LIKE  bbname AND

            zfw LIKE syfw AND

            zsm LIKE jysm.

 

汇率转换(参考程序ZFIXY001):

DATA: date LIKE sy-datum.          "获取汇率的时间,函数会取离指定时间前面最近维护的一个汇率

  DATA: rate LIKE vbrp-kursk.        "要输出的金额  最好参考一个有5位小数点的类型 不然精度会丢失

  DATA: curr_ex LIKE bapicurr-bapicurr .

  DATA: fa LIKE vbrp-kursk ,          "要转换的金额

        fc LIKE t001-waers ,          "外币

        lc LIKE t001-waers ,          "本币

        ty LIKE tcurr-kurst.         "类型

*----------------------------省略---------------------------------------

 

fc = rkwa-bwaer. "要转换的币种

          fa = rkwa-wrbtr. "要转换的金额

          curr_ex = fa.

          date = rkwa-budat. "记账日期

          CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'

            EXPORTING

              currency             = fc

              amount_external      = curr_ex

              max_number_of_digits = 13

            IMPORTING

              amount_internal      = fa.

 

          CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'  "获取汇率

            EXPORTING

              date             = date

              foreign_amount   = fa

              foreign_currency = fc

              local_currency   = lc

              type_of_rate     = ty

            IMPORTING

              local_amount     = rate

            EXCEPTIONS

              no_rate_found    = 1

              OTHERS           = 2.

          zwrbtr = rate.  "转换后的金额

 

关于select的几种总结(参考程序:zmm0002):

单行多个字段:

SELECT SINGLE ebelp ebeln INTO (i_list-ebelp , i_list-ebeln) FROM ekpo WHERE  banfn = i_list-banfn  AND bnfpo = i_list-bnfpo.

单行单个字段:

SELECT SINGLE  mmsta  INTO i_list-mmsta FROM marc WHERE matnr = i_list-matnr AND werks = i_list-werks.

单行全部字段:

SELECT SINGLE * FROM ekpo WHERE ebeln = i_list-ebeln AND ebelp = i_list-ebelp.

    i_list-pomenge = ekpo-menge.

    i_list-quant = i_list-pomenge - i_list-menge. "差异数量

i_list-quant1 = i_list-menge - i_list-pomenge. "差异数量

多行多字段(尽量少用)

SELECT * FROM ekpo WHERE ebeln = i_list-ebeln AND ebelp = i_list-ebelp.

************这里相当于一个循环

ENDSELECT

 

 

获取工厂和欠料编码相同情况下累计欠料最大值(参考程序zpp002)

FORM get_max_ylnum_data.

  SORT i_list BY werks matqq ylnum ASCENDING.

  LOOP AT i_list.

    c_list[] = i_list[].

    DELETE  c_list WHERE werks <> i_list-werks OR matqq <> i_list-matqq.

    SORT c_list BY werks matqq ylnum ASCENDING.

    READ TABLE c_list  INDEX 1.

    IF sy-subrc = 0 .

    i_list-ylnum1 = c_list-ylnum.

    ENDIF.

    MODIFY i_list.

  ENDLOOP.

ENDFORM.                    " get_max_ylnum_data

 

 

获取bom (参考程序zpp0026 ; 测试程序 ZEROTEST03)

REPORT  zerotest03.

TABLES: mara,marc,makt,stko,mast,stpo,t143t , eine.

TYPE-POOLS: slis.

*WRITE: sy-datum. "系统当前日期

*WRITE: sy-uzeit. "系统当前时间

 

*DATA: BEGIN OF selpool.

*        INCLUDE STRUCTURE cstmat.

*DATA: END OF selpool.

*DATA: dstst_flg LIKE csdata-xfeld.

DATA: matnr LIKE mara-matnr.      "物料编码

matnr = '410500017'.

DATA: werks LIKE marc-werks.       "工厂

DATA: BEGIN OF stb OCCURS 1000.

        INCLUDE STRUCTURE stpox.

DATA: END OF stb.

DATA: BEGIN OF selpool.

        INCLUDE STRUCTURE cstmat.

DATA: END OF selpool.

DATA: dstst_flg LIKE csdata-xfeld.                          "YHG132854

DATA: pm_stlal LIKE stko-stlal VALUE 1.

DATA: pm_stlan LIKE stzu-stlan VALUE 1.

 

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

          EXPORTING

               aufsw = ''

               capid = 'PP01'

               datuv = sy-datum

               ehndl = '1'                             "HGA108310

               mbwls = ''     

               mtnrv = '410500017'          "物料编码

*del     MEHRS = 'X'                                          "YHG134257

               mehrs = ''                             "YHG134257 是否多层展开,1表示多层,空为单层

*del     MMORY = '1'                                          "YHG020009"HGB070841

 

               stlal = pm_stlal

               stlan = pm_stlan

                                                            "HGD246532

               werks = '1600'     "工厂

               aumgb = 'X'                                    "NOTE_887365

          IMPORTING

             topmat = selpool

             dstst  = dstst_flg                             "YHG132854

          TABLES

             stb    = stb

*             matcat = matcat

          EXCEPTIONS

             material_not_found    = 4

             no_plant_data         = 8

             no_bom_found          = 12

             no_suitable_bom_found = 16

             alt_not_found         = 24

*d       missing_authorization = 28.                          "HGD059252

             missing_authorization = 28                     "HGD059252

             conversion_error      = 36.                    "HGD059252

IF SY-SUBRC = 0.

  LOOP AT stb.

    WRITE: stb-idnrk.

    WRITE: stb-mmsta.

  ENDLOOP.

ENDIF.

 

报表打印工单缺少一位问题:

需要参考原来的表名打印(参考程序:ZPP002 ,ZDS004)

  CLEAR v_i_fieldcat.

  v_i_fieldcat-fieldname     = 'AUFNR'.

  v_i_fieldcat-tabname       = 'I_LIST'.

  v_i_fieldcat-ref_fieldname = 'AUFNR'.

  v_i_fieldcat-ref_tabname   = 'AFKO'.

  v_i_fieldcat-seltext_m     = '工单号'.

  v_i_fieldcat-key           = 'X'.

  APPEND v_i_fieldcat.

 

0 0
原创粉丝点击