2019-12-27 查詢PIR - 2 GETDATA

處理數(shù)據(jù)先檢查再取數(shù)據(jù)

START-OF-SELECTION .
PERFORM CHECK_DATA.
PERFORM GET_DATA.

僅做簡(jiǎn)單檢查

FORM CHECK_DATA.
  IF S_LIFNR IS INITIAL AND S_MATNR IS INITIAL AND S_EKORG IS INITIAL AND S_WERKS IS INITIAL AND S_MATKL IS INITIAL AND S_EKGRP IS INITIAL.
    MESSAGE S208(00) WITH 'Please input query parameters'.
    EXIT.
  ENDIF.
ENDFORM.

取數(shù)據(jù)部分:GET_DATA. 最先大條件, 再做篩選锈拨。
FROM table 與INNER JOIN必須連在一起寫(xiě),不然會(huì)報(bào)錯(cuò)昭雌。

SELECT
      A~LIFNR,
      A~MATNR,
      E~EKORG,
      E~WERKS,
      E~ESOKZ,
      A~MEINS,
      A~UMREZ,
      A~UMREN,
      A~VABME,
      E~NETPR,
      E~WAERS,
      E~PEINH,
      E~BPRME,
      B~PEINH AS MM_PEINH,
      A~LMEIN,
      E~MWSKZ,
      A~MFRNR,
      E~EKGRP,
      E~APLFZ,
      E~MINBM,
      E~NORBM,
      E~INCO1,
      E~INCO2,
      A~IDNLF,
      A~RELIF,
      A~INFNR,
      A~URZLA,
      A~TELF1,
      M~MTART,
      E~LOEKZ,
      C~MMSTA
      INTO CORRESPONDING FIELDS OF TABLE @GT_ITAB
      FROM EINA AS A "PIR:General Data
      INNER JOIN EINE AS E ON A~INFNR = E~INFNR "PIR -Purchasing Organization Data
      INNER JOIN MARA AS M ON A~MATNR = M~MATNR "General Material Data
      LEFT  JOIN MARC AS C ON A~MATNR = C~MATNR AND E~WERKS = C~WERKS "Plant Data for Material
      LEFT  JOIN MBEW AS B ON A~MATNR = B~MATNR AND E~WERKS = B~BWKEY "Material Valuation
        WHERE A~MATNR IN @S_MATNR
        AND  E~WERKS IN @S_WERKS
        AND  A~LIFNR IN @S_LIFNR
        AND  E~EKORG IN @S_EKORG
        AND  E~ESOKZ IN @S_ESOKZ
        AND  M~MATKL IN @S_MATKL
        AND  E~EKGRP IN @S_EKGRP
        AND  M~MTART IN @S_MTART

再檢查:CHECK語(yǔ)句基于條件終止循環(huán)傳遞复唤。 如果CHECK語(yǔ)句中的條件被計(jì)算為false,則忽略CHECK語(yǔ)句之后的語(yǔ)句塊中的所有剩余語(yǔ)句烛卧,并且下一個(gè)循環(huán)開(kāi)始佛纫。 CHECK語(yǔ)句中的條件可以是任何邏輯表達(dá)式妓局。
CHECK跳轉(zhuǎn)的前提是<expr>為假時(shí)。
l CHECK只是跳出當(dāng)前事件塊呈宇,繼續(xù)下一個(gè)事件塊的處理好爬,相當(dāng)于方法的return;
l 另外甥啄,如果CHECK在循環(huán)(DO存炮、WHILE、LOOP)里蜈漓,只是跳出當(dāng)前循環(huán)而已穆桂;
l 如果CHECK出現(xiàn)在循環(huán)以外,退出的是當(dāng)前執(zhí)行的程序塊(processing block),例如一個(gè)FORM融虽,METHOD享完,或EVENT。
詳細(xì)參考 https://www.cnblogs.com/jiangzhengjun/p/4265443.html

  CHECK SY-SUBRC = 0 .

  SELECT * INTO TABLE gt_a017 FROM a017
           WHERE  matnr IN s_matnr
             AND  werks IN s_werks
             AND  lifnr IN s_lifnr
             AND  ekorg IN s_ekorg
             AND  esokz IN s_esokz.
  IF sy-subrc = 0.

  IF C_DEL = ' '.
    DELETE GT_ITAB WHERE LOEKZ = 'X'.  "Purch. info: Purch. organization data flagged for deletion
  ENDIF.

   SELECT * INTO TABLE GT_KONP FROM KONP
             FOR ALL ENTRIES IN GT_A017
             WHERE  KNUMH = GT_A017-KNUMH.

    SELECT * INTO TABLE GT_KONM FROM KONM
             FOR ALL ENTRIES IN GT_A017
             WHERE  KNUMH = GT_A017-KNUMH.

  ENDIF.

  SORT gt_a017 BY matnr werks matnr ekorg esokz .

  IF c_due = ' '.
    DELETE gt_a017 WHERE datab > sy-datum OR datbi < sy-datum.
  ELSE.

    IF p_datab IS NOT INITIAL.
      DELETE gt_a017 WHERE datab < p_datab.
    ENDIF.
    IF p_datbi IS NOT INITIAL.
      DELETE gt_a017 WHERE datbi > p_datbi.
    ENDIF.
  ENDIF.

  IF c_del = ' '.
    DELETE gt_konp WHERE loevm_ko = 'X'.
  ENDIF.

對(duì)表中數(shù)據(jù)進(jìn)行轉(zhuǎn)換有额,取值為內(nèi)部形式(物料號(hào)有前導(dǎo)零的時(shí)候被認(rèn)為是內(nèi)部形式般又;單位一般也有內(nèi)部形式外部形式之分)。在se11瀏覽數(shù)據(jù)的時(shí)候巍佑,顯示數(shù)據(jù)的畫(huà)面是使用內(nèi)部形式茴迁,當(dāng)detail overview的時(shí)候,則是外部形式句狼。顯示前轉(zhuǎn)換成外部形式笋熬。

在SAP系統(tǒng)里面很多地方都用到了長(zhǎng)文本,這些長(zhǎng)文本的值以其他字符的形式存在表STXL和STXH里面腻菇,不能直接去這兩個(gè)表里面去取值胳螟,而是要通過(guò)函數(shù)READ_TEXT去取. 很多新手不了解的地方可能就是怎么取到READ_TEXT函數(shù)里面的那些參數(shù)值,我這邊介紹兩種方法筹吐,通過(guò)這兩種方法都可以找到那幾個(gè)參數(shù):
一糖耸、第一種利用跟蹤查詢,不是用ST05跟蹤丘薛,而是去表里面跟蹤查詢嘉竟,比如你剛剛創(chuàng)建了一個(gè)銷售訂單的長(zhǎng)文本,這時(shí)候你可以去表STXH輸入日期和剛剛的時(shí)間洋侨,然后查看在這個(gè)表里剛剛產(chǎn)生的這些數(shù)據(jù)舍扰,依據(jù)此項(xiàng)就可以找到對(duì)應(yīng)的參數(shù)了,這個(gè)方法非常實(shí)用
二希坚、第二種前臺(tái)查看边苹,進(jìn)入長(zhǎng)文本編輯界面以后(記得是雙擊長(zhǎng)文本編輯器進(jìn)入),點(diǎn)擊菜單轉(zhuǎn)到—->表頭裁僧,里面出現(xiàn)的就是對(duì)應(yīng)的那些參數(shù)值个束,如下圖:


image.png

SE37: READ_TEXT


image.png
  LOOP AT gt_itab.

    CLEAR gt_itab-potxt.

    CONCATENATE gt_itab-infnr gt_itab-ekorg '0' gt_itab-werks INTO tdname.

    CALL FUNCTION 'READ_TEXT'
      EXPORTING
        client          = sy-mandt
        id              = 'BT'
        language        = 'E'
        name            = tdname
        object          = 'EINE'
*       archive_handle  = 0
*   IMPORTING
*       HEADER          = GW_THEAD    " Change 1 (need a header)
      TABLES
        lines           = t_line
      EXCEPTIONS
        id              = 1
        language        = 2
        name            = 3
        not_found       = 4
        object          = 5
        reference_check = 6.

    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    IF sy-subrc = 0.
*      read table t_table into wa_tline index 1.
*      I_ITAB-ZTEXT = wa_tline-tdline.
      LOOP AT t_line INTO wa_tline.
        CONCATENATE gt_itab-potxt wa_tline-tdline INTO gt_itab-potxt.
      ENDLOOP.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
      EXPORTING
        input  = gt_itab-meins
*       LANGUAGE             = SY-LANGU
      IMPORTING
*       LONG_TEXT            =
        output = gt_itab-meins
*       SHORT_TEXT           =
*      EXCEPTIONS
*       UNIT_NOT_FOUND       = 1
*       OTHERS = 2
      .
    LOOP AT gt_a017  WHERE lifnr = gt_itab-lifnr
                       AND matnr = gt_itab-matnr
                       AND ekorg = gt_itab-ekorg
                       AND werks = gt_itab-werks
                       AND esokz = gt_itab-esokz.
*        AND DATAB <= SY-DATUM
*        AND DATBI >= SY-DATUM.

      gt_itab-datab = gt_a017-datab.
      gt_itab-datbi = gt_a017-datbi.
      gt_itab-knumh = gt_a017-knumh.

      LOOP AT gt_konp WHERE knumh = gt_a017-knumh.
        IF gt_konp-kzbzg <> ''.
          LOOP AT gt_konm WHERE knumh = gt_konp-knumh AND kopos = gt_konp-kopos.
            CLEAR gt_out_tmp.
            MOVE-CORRESPONDING  gt_itab TO gt_out_tmp.
            gt_out_tmp-kstbm = gt_konm-kstbm.
*            IF gt_konm-kstbm <> 0.
            gt_out_tmp-kbetr = gt_konm-kbetr.
*            ENDIF.
            gt_out_tmp-peinh = gt_konp-kpein.
            gt_out_tmp-waers = gt_konp-konwa.
            gt_out_tmp-bprme = gt_konp-kmein.
            CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
              EXPORTING
                input  = gt_out_tmp-bprme
*               LANGUAGE             = SY-LANGU
              IMPORTING
*               LONG_TEXT            =
                output = gt_out_tmp-bprme
*               SHORT_TEXT           =
*      EXCEPTIONS
*               UNIT_NOT_FOUND       = 1
*               OTHERS = 2
              .
            gt_out_tmp-netpr    = gt_konp-kbetr.
            gt_out_tmp-loevm_ko = gt_konp-loevm_ko.
* Begin of change SAPCI#2690
            IF c_cur IS NOT INITIAL.
              PERFORM base_currency USING gt_out_tmp-netpr
                                          gt_out_tmp-waers
                                          gt_out_tmp-peinh
                                    CHANGING gt_out_tmp-b_netpr
                                             gt_out_tmp-b_waers
                                             gt_out_tmp-b_netpr1.
            ENDIF.
* End of change SAPCI#2690
            APPEND gt_out_tmp.
          ENDLOOP.
        ELSE.
*          CLEAR gt_out_tmp.
          MOVE-CORRESPONDING  gt_itab TO gt_out_tmp.
          gt_out_tmp-peinh = gt_konp-kpein.
          gt_out_tmp-waers = gt_konp-konwa.
          gt_out_tmp-bprme = gt_konp-kmein.
          CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
            EXPORTING
              input  = gt_out_tmp-bprme
*             LANGUAGE             = SY-LANGU
            IMPORTING
*             LONG_TEXT            =
              output = gt_out_tmp-bprme
*             SHORT_TEXT           =
*      EXCEPTIONS
*             UNIT_NOT_FOUND       = 1
*             OTHERS = 2
            .
          gt_out_tmp-netpr    = gt_konp-kbetr.
          gt_out_tmp-loevm_ko = gt_konp-loevm_ko.
* Begin of change SAPCI#2690
          IF c_cur IS NOT INITIAL.
            PERFORM base_currency USING gt_out_tmp-netpr
                                        gt_out_tmp-waers
                                        gt_out_tmp-peinh
                                  CHANGING gt_out_tmp-b_netpr
                                           gt_out_tmp-b_waers
                                           gt_out_tmp-b_netpr1.
          ENDIF.
* End of change SAPCI#2690
          APPEND gt_out_tmp.
        ENDIF.
      ENDLOOP.
    ENDLOOP.

    IF sy-subrc <> 0 .
      IF gt_itab-mtart = 'ZSV'.
*      DATA:PV_MTART TYPE MARA-MTART.
*      SELECT SINGLE MTART INTO PV_MTART FROM MARA WHERE MATNR = GT_ITAB-MATNR.
*      IF PV_MTART = 'ZSV'.
        MOVE-CORRESPONDING  gt_itab TO gt_out_tmp.
        APPEND gt_out_tmp.
      ENDIF.
    ENDIF.
  ENDLOOP.

***{ D01K932831;CN0778;02/28/2019
  LOOP AT gt_out_tmp.

*{  SAPCI-2801 Start
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
      EXPORTING
        input          = gt_out_tmp-lmein
      IMPORTING
        output         = gt_out_tmp-lmein
      EXCEPTIONS
        unit_not_found = 1
        OTHERS         = 2.

    IF sy-subrc <> 0.
    ENDIF.

    IF gt_out_tmp-meins EQ gt_out_tmp-lmein.
      gt_out_tmp-mm_netpr = gt_out_tmp-b_netpr1 * gt_out_tmp-mm_peinh.
    ELSE.
      DATA(lv_prcunit_buom) = gt_out_tmp-peinh * ( gt_out_tmp-umrez / gt_out_tmp-umren ).
      gt_out_tmp-mm_netpr = ( gt_out_tmp-b_netpr / lv_prcunit_buom ) * gt_out_tmp-mm_peinh.
    ENDIF.
*}  SAPCI-2801 End
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末慕购,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子茬底,更是在濱河造成了極大的恐慌沪悲,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阱表,死亡現(xiàn)場(chǎng)離奇詭異殿如,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)捶枢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)握截,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人烂叔,你說(shuō)我怎么就攤上這事谨胞。” “怎么了蒜鸡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵胯努,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我逢防,道長(zhǎng)叶沛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任忘朝,我火速辦了婚禮灰署,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘局嘁。我一直安慰自己溉箕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布悦昵。 她就那樣靜靜地躺著肴茄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪但指。 梳的紋絲不亂的頭發(fā)上寡痰,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音棋凳,去河邊找鬼拦坠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛剩岳,可吹牛的內(nèi)容都是我干的贪婉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼卢肃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疲迂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起莫湘,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尤蒿,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后幅垮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體腰池,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年忙芒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了示弓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呵萨,死狀恐怖奏属,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情潮峦,我是刑警寧澤囱皿,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站忱嘹,受9級(jí)特大地震影響嘱腥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拘悦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一齿兔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧础米,春花似錦分苇、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至掏颊,卻和暖如春糟红,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乌叶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工盆偿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人准浴。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓事扭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親乐横。 傳聞我的和親對(duì)象是個(gè)殘疾皇子求橄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348