2019-12-27 2019-12-27 查詢PIR - 3 output_data 輸出數(shù)據(jù)

輸出數(shù)據(jù),分別用子程序處理ALV 相關(guān)的Fieldcat 及Layout. 最后調(diào)用REUSE_ALV_GRID_DISPLAY輸出ALV:
其中:
i_callback_user_command = 'USER_COMMAND' 及
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'有點(diǎn)特別坑填,請見后。
布局部分:
ALV中,欲保存布局,須在REUSE_ALV_GRID_DISPLAY函數(shù)中添加I_SAVE參數(shù)汁政。I_SAVE定義為C數(shù)據(jù)類型,值如下:
‘ ‘ = display variants cannot be saved
Defined display variants (e.g. delivered display variants) can be selected for presentation independently of this flag. Changes can not be saved.
‘X’ = standard save
Display variants can be saved as standard display variants. User-specific saving is not possible.
‘U’ = only user-specific saving
The user can only save display variants user-specifically
‘A’ = standard and user-specific saving
The user can save a display variant user-specifically and as standard display variant. The user chooses in the display variant save popup.
為了進(jìn)一步管理布局缀旁,則需要加入IS_VARIANT參數(shù)记劈,其數(shù)據(jù)結(jié)構(gòu)參考DISVARIANT,一般需要定義其中的REPORT=SY-REPID并巍,VARIANT為布局保存格式目木。有三個有用函數(shù)供調(diào)用保存的格式布局,分別為:
REUSE_ALV_VARIANT_DEFAULT_GET 讀取默認(rèn)的布局
REUSE_ALV_VARIANT_EXISTENCE 檢測指定布局是否存在
REUSE_ALV_VARIANT_F4 顯示布局格式選擇對話窗

FORM output_data.
  PERFORM addfield.
  PERFORM layout.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = sy-repid
      i_callback_user_command = 'USER_COMMAND'
*     I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
*     I_GRID_TITLE            = G_TITLE
      it_fieldcat             = gt_fieldcat[]
      is_layout               = gs_layout
      is_variant              = g_variant  ”可調(diào)用變式
      i_save                  = 'A'   “這是保存變式
    TABLES
      t_outtab                = gt_out[]
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.
ENDFORM.                    "OUTPUT_DATA

ALV 相關(guān)的Fieldcat : 對一些字段要求相同的懊渡,用FILED_TYPE區(qū)別:

FORM addfield.
  PERFORM e01_fieldcat_init USING:
      'INFNR'    'Info record NO.'      6  '' '' 'Q' '' '',
      'LIFNR'    'Vendor'      6  '' '' 'Q' '' 'X',
      'MATNR'    'Material NO.'      6  '' '' ' ' '' 'X',
      'EKORG'    'Purchasing Org.'      10  '' '' ' ' '' '',
      'WERKS'    'Plant'         25   '' '' ' ' '' '',
      'ESOKZ'    'Infotype'      10  '' '' ' ' '' '',
      'MEINS'    'PO Unit'         25   '' '' ' ' '' '',
      'UMREZ'    'Numerator for conversion'         10   '' '' ' ' '' '',
      'UMREN'    'Denominator for conversion'         10   '' '' ' ' '' '',
      'VABME'    'Var. PO Unit Active'         10   '' '' ' ' '' '',
      'NETPR'    'Net price'      10  '' '' 'C' '' '',
      'WAERS'    'Currency'        10   '' '' ' ' '' '',
      'PEINH'    'Price unit'        6  '' '' ' ' '' '',
      'BPRME'    'Order Price Unit'         18   '' '' ' ' '' '',
*{    SAPCI-2801 Start
      'MM_NETPR'    text-h01    10  space   space   'C'     space   space,
      'MM_PEINH'    text-h02    6   space   space   space   space   space,
      'LMEIN'       text-h03    6   space   space   space   space   space,
*}    SAPCI-2801 End
      'DATAB'    'Valid From'      35  '' '' ' ' '' '',
      'DATBI'    'Valid To'         18   '' '' ' ' '' '',
      'MWSKZ'    'Tax Code' 13   '' '' ' ' '' '',
      'MFRNR'    'Manufacturer' 13   '' '' ' ' '' '',
      'EKGRP'    'Pur. Group' 10   '' '' '' '' '',
      'APLFZ'    'Planned Delivery Days'        10   '' '' ' ' '' '',
      'MINBM'    'Minimum PO Quantity'        6  '' '' ' ' '' '',
      'NORBM'    'Standard PO Quantity' 13   '' '' ' ' '' '',
      'INCO1'    'Incoterms1'        10   '' '' ' ' '' '',
      'INCO2'    'Incoterms2'        6  '' '' ' ' '' '',
      'IDNLF'     'Vendor Material' 13   '' '' ' ' '' '',
      'MFR_CODE'  'Mfr Code' 13   '' '' ' ' '' '',
      'MFR_NAME'  'Mfr Name' 35   '' '' ' ' '' '',
      'MPN_NO'    'MPN number' 20   '' '' ' ' '' '',
      'MFRPN'     'Mfr Part Number' 40   '' '' ' ' '' '',
      'BRAND'     'Brand' 15   '' '' ' ' '' '',
      'BRAND_TYP' 'Brand Type' 45   '' '' ' ' '' '',
      'AENAM'     'Changed By' 12  '' '' ' ' '' '',
      'AEDAT'     'Changed On' 18   '' '' ' ' '' '',
      'AETIM'     'Time of Last Change' 18   '' '' ' ' '' '',
      'RELIF'      'Regular Vendor' 20   '' '' ' ' '' '',
      'POTXT'     'PO text' 13   '' '' ' ' '' '',
      'KSTBM'     'Scale Quantity' 13   '' '' ' ' '' '',
      'KBETR'     'Scale Amount'      10  '' '' 'C' '' '',
      'URZLA'     'country of origin' 13   '' '' ' ' '' '',
      'TELF1'     'telephone' 13   '' '' ' ' '' '',
      'LOEKZ'     'Deletion flag of Purch.org.' 13   '' '' ' ' '' '',
      'LOEVM_KO'  'Deletion flag of Condition' 13   '' '' ' ' '' '',
      'MMSTA'     'Plant-Specific Material Status' 13   '' '' ' ' '' '',

      'KNUMH'     'Condition record no.' 10  '' '' ' ' '' '',
      'KOPOS'     'Sequential number of the condition' 3   '' '' ' ' '' ''.


*      'VOLEH '     'Volume Unit' 13   '' '' 'Q' '' '',
*      'KWMENG2'    'SO Qty in CAR' 13   '' '' 'Q' '' '',
*      'MENGE3'     'STO2 Qty in CAR (3200)' 20   '' '' 'Q' '' '',
*      'VOLUM'      'SO Volume'        10   '' '' ''  '' ''.

ENDFORM.                    "ADDFIELD

中間e01_fieldcat_init部分:Field_type = Q or C or V 或其他分別給值:
no_zero 如果取值為零刽射,則為空军拟,既不輸出零;
just: 對其方式誓禁,R 右對齊
no_convext懈息,Do not consider conversion exit for output
qfieldname 參考計(jì)量單位的字段名稱
qtabname Qfieldname 對應(yīng)的輸出內(nèi)表名
對銷售單位及體積單位給了值:

image.png

ALV FIELDCAT詳細(xì)字段值可叁考:分類講得很詳細(xì)。
https://blog.csdn.net/champaignwolf/article/details/79662527

FORM e01_fieldcat_init
    USING  field_name      TYPE c
           field_text      TYPE c
           field_lenth     TYPE i
           field_edit      TYPE c
           field_checkbox  TYPE c
           field_type      TYPE c
           field_key       TYPE c
           fix_column      TYPE c.

  DATA: ls_fieldcat TYPE slis_fieldcat_alv.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = field_name.
  ls_fieldcat-seltext_l = field_text.

  IF field_type EQ 'Q'.
    ls_fieldcat-just     = 'R'.
    ls_fieldcat-no_zero  = 'X'.
    ls_fieldcat-qtabname = 'VBDPA'.
    ls_fieldcat-qfieldname = 'VRKME'.

  ELSEIF field_type EQ 'C'.
    ls_fieldcat-just     = 'R'.
    ls_fieldcat-no_zero  = 'X'.
  ELSEIF field_type EQ 'V'.
    ls_fieldcat-just     = 'R'.
    ls_fieldcat-no_zero  = 'X'.
    ls_fieldcat-qtabname = 'VBDPA'.
    ls_fieldcat-qfieldname = 'VOLEH'.
  ELSE.
    ls_fieldcat-no_convext = 'X'.
    ls_fieldcat-just = 'L'.
  ENDIF.

*  LS_FIELDCAT-CHECKBOX  = FIELD_CHECKBOX.
  ls_fieldcat-outputlen = field_lenth.
  ls_fieldcat-edit      = field_edit.
  ls_fieldcat-key       = field_key.

  APPEND ls_fieldcat TO gt_fieldcat.
  CLEAR ls_fieldcat.
ENDFORM.                    "E01_FIELDCAT_INIT

LAYOUT只是給了優(yōu)化列寬設(shè)置及使ALV表格按斑馬線間隔條碼方式顯示:

FORM layout.
  gs_layout-colwidth_optimize   = 'X'.
  gs_layout-zebra               = 'X'.
*  GS_LAYOUT-BOX_FIELDNAME = 'SEL'.
*  GS_LAYOUT-COLTAB_FIELDNAME = 'COLOR'.
ENDFORM.                    "layout

I_CALLBACK_PF_STATUS_SET:ALV工具欄Subroutine(子程序)
I_CALLBACK_USER_COMMAND:ALV User Command Subroutine(子程序)现横,實(shí)現(xiàn)對應(yīng)菜單項(xiàng)及相應(yīng)事件功能
詳細(xì)請參考漓拾,非常不錯:https://www.cnblogs.com/hcmy00/p/6524107.html
熱點(diǎn)鏈接
熱點(diǎn)鏈接,即 Fieldcat中 的 hotspot 屬性戒祠;
設(shè)置之后,當(dāng)用戶點(diǎn)擊帶有熱點(diǎn)的字段時速种,就會觸發(fā) Subroutine(FRM_USER_COMMAND)中的動作姜盈;對于熱點(diǎn)鏈接,所對應(yīng)的FCode為 “&IC1“配阵;

FORM user_command USING r_ucomm TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.

  CASE r_ucomm.
    WHEN '&IC1'.


      CASE rs_selfield-fieldname.
        WHEN 'B_NETPR1'.
          CALL FUNCTION 'DSYS_SHOW_FOR_F1HELP'
            EXPORTING
*             APPLICATION      = 'SO70'
              dokclass         = 'TX'
              doklangu         = 'E'
              dokname          = 'Z_B_NETPR1'
*             DOKTITLE         = ' '
*             HOMETEXT         = ' '
*             OUTLINE          = ' '
*             VIEWNAME         = 'STANDARD'
*             Z_ORIGINAL_OUTLINE       = ' '
*             CALLED_FROM_SO70 = ' '
*             SHORT_TEXT       = ' '
*             APPENDIX         = ' '
*   IMPORTING
*             APPL             =
*             PF03             =
*             PF15             =
*             PF12             =
            EXCEPTIONS
              class_unknown    = 1
              object_not_found = 2
              OTHERS           = 3.
          IF sy-subrc <> 0.
* Implement suitable error handling here
          ENDIF.
      ENDCASE.
  ENDCASE.
ENDFORM.                    "USER_COMMAND

如上邏輯僅在點(diǎn)擊字段 Base Net Unit Price時彈出如下框給出說明:


image.png

對于屏幕上的field馏颂,我們通常可以使用f1調(diào)出它對應(yīng)的data element的documention棋傍,要維護(hù)data element的文本可在data element修改狀態(tài)勾選那個 change document checkbox,然后點(diǎn)擊documentation就可以修改了救拉。

但是我們?nèi)绾吾槍ζ聊簧厦嫒我庖粋€field去調(diào)用f1 help文檔呢?

首先當(dāng)然要創(chuàng)建f1 help文擋瘫拣,在se61創(chuàng)建TX document class的文擋并且指定語言
https://blog.csdn.net/feijibin/article/details/9107161

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亿絮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子麸拄,更是在濱河造成了極大的恐慌派昧,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拢切,死亡現(xiàn)場離奇詭異蒂萎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淮椰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門五慈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人主穗,你說我怎么就攤上這事泻拦。” “怎么了黔牵?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵聪轿,是天一觀的道長。 經(jīng)常有香客問我猾浦,道長陆错,這世上最難降的妖魔是什么灯抛? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮音瓷,結(jié)果婚禮上对嚼,老公的妹妹穿的比我還像新娘。我一直安慰自己绳慎,他們只是感情好纵竖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杏愤,像睡著了一般靡砌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上珊楼,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天通殃,我揣著相機(jī)與錄音,去河邊找鬼厕宗。 笑死画舌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的已慢。 我是一名探鬼主播曲聂,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佑惠!你這毒婦竟也來了朋腋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤兢仰,失蹤者是張志新(化名)和其女友劉穎乍丈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體把将,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轻专,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了察蹲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片请垛。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖洽议,靈堂內(nèi)的尸體忽然破棺而出宗收,到底是詐尸還是另有隱情,我是刑警寧澤亚兄,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布混稽,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匈勋。R本人自食惡果不足惜眠砾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一兔毙、第九天 我趴在偏房一處隱蔽的房頂上張望间景。 院中可真熱鬧订晌,春花似錦、人聲如沸饿自。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昭雌。三九已至复唤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烛卧,已是汗流浹背苟穆。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唱星,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓跟磨,卻偏偏與公主長得像间聊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子抵拘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354