如何在呼叫交易方法中选择t代码'mm43'的基本数据视图

2020-08-18 00:38发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我的程序如下:

但是我收到一条错误消息,提示可以选择屏幕顺序……

表:ekko,ekpo。

TYPE-POOLS:slis。

数据:

iekko发生次数0的开始

ebeln TYPE ekko-ebeln,

bukrs TYPE ekko-bukrs,

bstyp TYPE ekko-bstyp,

bsart TYPE ekko-bsart,

bsakz TYPE ekko-bsakz,

loekz TYPE ekko-loekz,

状态类型ekko状态

aedat TYPE ekko-aedat,

伊科的尽头。

数据:

iekpo发生0的开始,

ebeln TYPE ekpo-ebeln,

matnr TYPE ekpo-matnr,

ematn TYPE ekpo-ematn

bukrs TYPE ekpo-bukrs,

werks TYPE ekpo-werks

lgort TYPE ekpo-lgort,

bednr TYPE ekpo-bednr,

matkl TYPE ekpo-matkl,

艾科波结束。

数据:开始于最终事件0,

ebeln像ekko-ebeln,

bukrs喜欢ekko-bukrs,

bstyp就像ekko-bstyp,

bsart喜欢ekko-bsart,

bsakz就像ekko-bsakz,

loekz喜欢ekko-loekz,

statu像ekko-statu,

matnr like ekpo-matnr,

ematn像ekpo-ematn,

werks像ekpo-werks

lgort喜欢ekpo-lgort,

bednr像ekpo-bednr,

matkl like ekpo-matkl,

决赛结束。

DATA:i_repid TYPE sy-repid,

final_cat之类的final表,

wa_final TYPE最终版本。

数据:int_fcat类型slis_t_fieldcat_alv,

wa_layout类型slis_layout_alv,

v_ebeln TYPE ekko-ebeln,

v_matnr TYPE ekpo-matnr,

it_events类型slis_alv_event,

gt_events类型slis_t_event。

DATA:带有标题行的bdcdata的bdcdata类型表,

bdcdata的zdata类型表。

SELECT-OPTIONS:s_ebeln FOR ekko-ebeln,

s_bukrs FOR ekko-bukrs,

s_aedat FOR ekko-aedat,

s_bsart FOR ekko-bsart,

s_ebelp FOR ekpo-ebelp。

开始选择。

SELECT ebeln

bukrs

bstyp

bsart

bsakz

loekz

状态

来自ekko

进入表iekko的对应字段

s_ebeln中的ebeln。

SELECT ebeln

matnr

ematn

bukrs

古怪

lgort

bednr

matkl

从ekpo到表iekpo

对于iekko中的所有条目ebeln EQ iekko-ebeln。

用ebeln排序iekpo。

环在依可。

使用键ebeln = iekko-ebeln二进制搜索读取表iekpo。

IF sy-subrc EQ 0。

MOVE:iekko-ebeln到final-elbeln,

iekko-bukrs到最终用户,

iekko-bstyp到final-bstyp,

iekko-bsart到最终bsart,

iekko-bsakz到final-bsakz,

iekko-loekz到final-loekz,

iekko状态到最终状态,

iekpo-matnr到final-matnr,

iekpo-ematn到最终ematn,

iekpo-werks到最终版本,

iekpo-lgort到final-lgort,

iekpo-bednr到final-bednr,

iekpo-matkl到final-matkl。

APPEND结束。

清除决赛。

清除iekko。

清除iekpo。

ENDIF。

ENDLOOP。

i_repid = sy-repid。

wa_layout-zebra ='X'。

调用功能'REUSE_ALV_FIELDCATALOG_MERGE'

导出

i_program_name = i_repid

i_internal_tabname ='最终'

i_inclname = i_repid

改变

ct_fieldcat = int_fcat

例外情况

接口不一致= 1

program_error = 2

其他= 3。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

调用功能'REUSE_ALV_GRID_DISPLAY'

导出

i_callback_program = i_repid

i_callback_user_command ='USER_COMMAND1'

i_callback_top_of_page ='TOP'

i_callback_html_end_of_list ='END_OF_LIST_HTML'

is_layout = wa_layout

it_fieldcat = int_fcat

i_save ='A'

i_screen_start_column = 1

i_screen_start_line = 2

i_screen_end_column = 1000

i_screen_end_line = 2000

表格

t_outtab =最终

例外情况

program_error = 1

其他= 2。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

*&--------------------------------------------- ------------------------ *

*&表单end_of_list_html

*&--------------------------------------------- ------------------------ *

*文字

* ---------------------------------------------- ------------------------ *

*->结束文字

* ---------------------------------------------- ------------------------ *

FORM end_of_list_html使用结束类型对cl_dd_document的引用。

呼叫方法结束->添加文本

导出

文字='百安居------>"拳王"。

ENDFORM。 " end_of_list_html

数据:带有标题行的wa_listheader类型slis_t_listheader。

*&--------------------------------------------- ------------------------ *

*&表格TOP-OF-PAGE

*&--------------------------------------------- ------------------------ *

*文字

* ---------------------------------------------- ------------------------ *

FORM顶部。

wa_listheader-typ ='S'。

wa_listheader-key ='DATE'。

wa_listheader-info = sy-datum。

将sy-data写入wa_listheader-info。

APPEND wa_listheader。

wa_listheader-typ ='S'。

wa_listheader-key ='TIME'。

wa_listheader-info = sy-uzeit。

将sy-uzeit写到wa_listheader-info。

APPEND wa_listheader。

wa_listheader-typ ='S'。

wa_listheader-key ='客户端'。

wa_listheader-info = sy-mandt。

APPEND wa_listheader。

清除wa_listheader。

调用功能'REUSE_ALV_COMMENTARY_WRITE'

导出

it_list_commentary = wa_listheader []

i_logo ='ENJOYSAP_LOGO'。

* i_end_of_list_grid ='END'。

ENDFORM。 " TOP-OF-PAGE

*&--------------------------------------------- ------------------------ *

*&USER_COMMAND1表格

*&--------------------------------------------- ------------------------ *

*文字

* ---------------------------------------------- ------------------------ *

*-> UCOMM文字

*-> RS_SELFIELD_EKPO文本

* ---------------------------------------------- ------------------------ *

FORM user_command1使用ucomm TYPE sy-ucomm

更改rs_selfield_ekpo TYPE slis_selfield。

案例ucomm。

当'&IC1'时。

如果rs_selfield_ekpo-fieldname ='EBELN'。

设置参数ID" BES"字段v_ebeln。

呼叫交易" ME23N"并跳过第一屏。

ELSE。

MESSAGE"无效字段" TYPE" S"。

ENDIF。

结束。

案例ucomm。

当'&IC1'时。

如果rs_selfield_ekpo-fieldname ='MATNR'。

设置参数ID" MAT"字段v_matnr。

清除bdcdata。

使用'SAPLMGMW''0100'执行bdc_dynpro。

使用" BDC_CURSOR"执行bdc_field

'RMMW1-MATNR'。

使用'RMMW1-MATNR'执行bdc_field

v_matnr。

使用'MSICHTAUSW-KZSEL(01)'执行bdc_field

'X'。

通话功能'MATERIAL_BTCI_SELECTION_NEW'

导出

材质= v_matnr

选择='K'

tcode ='MM43'

表格

btci_d0070 = zdata

例外情况

material_not_found = 1

material_number_missing = 2

material_type_missing = 3

material_type_not_found = 4

no_active_dynpro_selected = 5

no_authority = 6

其他= 7。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

将zdata的行追加到bdcdata。

清除v_matnr。

使用bdcdata模式'E'进行交易'MM43'。

ENDIF。

结束。

ENDFORM。 " user_command1

*&--------------------------------------------- ------------------------ *

*&表格BDC_DYNPRO

*&--------------------------------------------- ------------------------ *

*文字

* ---------------------------------------------- ------------------------ *

*->程序文本

*-> DYNPRO文字

* ---------------------------------------------- ------------------------ *

使用程序dynpro来形成bdc_dynpro。

清除bdcdata。

bdcdata-program =程序。

bdcdata-dynpro = dynpro。

bdcdata-dynbegin ='X'。

附加bdcdata。

ENDFORM。 " BDC_DYNPRO

* ---------------------------------------------- ------------------------ *

*插入字段*

* ---------------------------------------------- ------------------------ *

使用fnam fval形成bdc_field。

清除bdcdata。

bdcdata-fnam = fnam。

bdcdata-fval = fval。

附加bdcdata。

ENDFORM。 " BDC_FIELD

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我的程序如下:

但是我收到一条错误消息,提示可以选择屏幕顺序……

表:ekko,ekpo。

TYPE-POOLS:slis。

数据:

iekko发生次数0的开始

ebeln TYPE ekko-ebeln,

bukrs TYPE ekko-bukrs,

bstyp TYPE ekko-bstyp,

bsart TYPE ekko-bsart,

bsakz TYPE ekko-bsakz,

loekz TYPE ekko-loekz,

状态类型ekko状态

aedat TYPE ekko-aedat,

伊科的尽头。

数据:

iekpo发生0的开始,

ebeln TYPE ekpo-ebeln,

matnr TYPE ekpo-matnr,

ematn TYPE ekpo-ematn

bukrs TYPE ekpo-bukrs,

werks TYPE ekpo-werks

lgort TYPE ekpo-lgort,

bednr TYPE ekpo-bednr,

matkl TYPE ekpo-matkl,

艾科波结束。

数据:开始于最终事件0,

ebeln像ekko-ebeln,

bukrs喜欢ekko-bukrs,

bstyp就像ekko-bstyp,

bsart喜欢ekko-bsart,

bsakz就像ekko-bsakz,

loekz喜欢ekko-loekz,

statu像ekko-statu,

matnr like ekpo-matnr,

ematn像ekpo-ematn,

werks像ekpo-werks

lgort喜欢ekpo-lgort,

bednr像ekpo-bednr,

matkl like ekpo-matkl,

决赛结束。

DATA:i_repid TYPE sy-repid,

final_cat之类的final表,

wa_final TYPE最终版本。

数据:int_fcat类型slis_t_fieldcat_alv,

wa_layout类型slis_layout_alv,

v_ebeln TYPE ekko-ebeln,

v_matnr TYPE ekpo-matnr,

it_events类型slis_alv_event,

gt_events类型slis_t_event。

DATA:带有标题行的bdcdata的bdcdata类型表,

bdcdata的zdata类型表。

SELECT-OPTIONS:s_ebeln FOR ekko-ebeln,

s_bukrs FOR ekko-bukrs,

s_aedat FOR ekko-aedat,

s_bsart FOR ekko-bsart,

s_ebelp FOR ekpo-ebelp。

开始选择。

SELECT ebeln

bukrs

bstyp

bsart

bsakz

loekz

状态

来自ekko

进入表iekko的对应字段

s_ebeln中的ebeln。

SELECT ebeln

matnr

ematn

bukrs

古怪

lgort

bednr

matkl

从ekpo到表iekpo

对于iekko中的所有条目ebeln EQ iekko-ebeln。

用ebeln排序iekpo。

环在依可。

使用键ebeln = iekko-ebeln二进制搜索读取表iekpo。

IF sy-subrc EQ 0。

MOVE:iekko-ebeln到final-elbeln,

iekko-bukrs到最终用户,

iekko-bstyp到final-bstyp,

iekko-bsart到最终bsart,

iekko-bsakz到final-bsakz,

iekko-loekz到final-loekz,

iekko状态到最终状态,

iekpo-matnr到final-matnr,

iekpo-ematn到最终ematn,

iekpo-werks到最终版本,

iekpo-lgort到final-lgort,

iekpo-bednr到final-bednr,

iekpo-matkl到final-matkl。

APPEND结束。

清除决赛。

清除iekko。

清除iekpo。

ENDIF。

ENDLOOP。

i_repid = sy-repid。

wa_layout-zebra ='X'。

调用功能'REUSE_ALV_FIELDCATALOG_MERGE'

导出

i_program_name = i_repid

i_internal_tabname ='最终'

i_inclname = i_repid

改变

ct_fieldcat = int_fcat

例外情况

接口不一致= 1

program_error = 2

其他= 3。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

调用功能'REUSE_ALV_GRID_DISPLAY'

导出

i_callback_program = i_repid

i_callback_user_command ='USER_COMMAND1'

i_callback_top_of_page ='TOP'

i_callback_html_end_of_list ='END_OF_LIST_HTML'

is_layout = wa_layout

it_fieldcat = int_fcat

i_save ='A'

i_screen_start_column = 1

i_screen_start_line = 2

i_screen_end_column = 1000

i_screen_end_line = 2000

表格

t_outtab =最终

例外情况

program_error = 1

其他= 2。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

*&--------------------------------------------- ------------------------ *

*&表单end_of_list_html

*&--------------------------------------------- ------------------------ *

*文字

* ---------------------------------------------- ------------------------ *

*->结束文字

* ---------------------------------------------- ------------------------ *

FORM end_of_list_html使用结束类型对cl_dd_document的引用。

呼叫方法结束->添加文本

导出

文字='百安居------>"拳王"。

ENDFORM。 " end_of_list_html

数据:带有标题行的wa_listheader类型slis_t_listheader。

*&--------------------------------------------- ------------------------ *

*&表格TOP-OF-PAGE

*&--------------------------------------------- ------------------------ *

*文字

* ---------------------------------------------- ------------------------ *

FORM顶部。

wa_listheader-typ ='S'。

wa_listheader-key ='DATE'。

wa_listheader-info = sy-datum。

将sy-data写入wa_listheader-info。

APPEND wa_listheader。

wa_listheader-typ ='S'。

wa_listheader-key ='TIME'。

wa_listheader-info = sy-uzeit。

将sy-uzeit写到wa_listheader-info。

APPEND wa_listheader。

wa_listheader-typ ='S'。

wa_listheader-key ='客户端'。

wa_listheader-info = sy-mandt。

APPEND wa_listheader。

清除wa_listheader。

调用功能'REUSE_ALV_COMMENTARY_WRITE'

导出

it_list_commentary = wa_listheader []

i_logo ='ENJOYSAP_LOGO'。

* i_end_of_list_grid ='END'。

ENDFORM。 " TOP-OF-PAGE

*&--------------------------------------------- ------------------------ *

*&USER_COMMAND1表格

*&--------------------------------------------- ------------------------ *

*文字

* ---------------------------------------------- ------------------------ *

*-> UCOMM文字

*-> RS_SELFIELD_EKPO文本

* ---------------------------------------------- ------------------------ *

FORM user_command1使用ucomm TYPE sy-ucomm

更改rs_selfield_ekpo TYPE slis_selfield。

案例ucomm。

当'&IC1'时。

如果rs_selfield_ekpo-fieldname ='EBELN'。

设置参数ID" BES"字段v_ebeln。

呼叫交易" ME23N"并跳过第一屏。

ELSE。

MESSAGE"无效字段" TYPE" S"。

ENDIF。

结束。

案例ucomm。

当'&IC1'时。

如果rs_selfield_ekpo-fieldname ='MATNR'。

设置参数ID" MAT"字段v_matnr。

清除bdcdata。

使用'SAPLMGMW''0100'执行bdc_dynpro。

使用" BDC_CURSOR"执行bdc_field

'RMMW1-MATNR'。

使用'RMMW1-MATNR'执行bdc_field

v_matnr。

使用'MSICHTAUSW-KZSEL(01)'执行bdc_field

'X'。

通话功能'MATERIAL_BTCI_SELECTION_NEW'

导出

材质= v_matnr

选择='K'

tcode ='MM43'

表格

btci_d0070 = zdata

例外情况

material_not_found = 1

material_number_missing = 2

material_type_missing = 3

material_type_not_found = 4

no_active_dynpro_selected = 5

no_authority = 6

其他= 7。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

将zdata的行追加到bdcdata。

清除v_matnr。

使用bdcdata模式'E'进行交易'MM43'。

ENDIF。

结束。

ENDFORM。 " user_command1

*&--------------------------------------------- ------------------------ *

*&表格BDC_DYNPRO

*&--------------------------------------------- ------------------------ *

*文字

* ---------------------------------------------- ------------------------ *

*->程序文本

*-> DYNPRO文字

* ---------------------------------------------- ------------------------ *

使用程序dynpro来形成bdc_dynpro。

清除bdcdata。

bdcdata-program =程序。

bdcdata-dynpro = dynpro。

bdcdata-dynbegin ='X'。

附加bdcdata。

ENDFORM。 " BDC_DYNPRO

* ---------------------------------------------- ------------------------ *

*插入字段*

* ---------------------------------------------- ------------------------ *

使用fnam fval形成bdc_field。

清除bdcdata。

bdcdata-fnam = fnam。

bdcdata-fval = fval。

附加bdcdata。

ENDFORM。 " BDC_FIELD

付费偷看设置
发送
4条回答
灬番茄
1楼 · 2020-08-18 00:55.采纳回答

嗨,

尝试使用功能模块'MATERIAL_MAINTAIN_DIAL_RETAIL'代替调用Call Transaction。

传递" P_PSTAT"值。

感谢与问候

巴拉克里希纳(Bala Krishna)

Nan4612
2楼-- · 2020-08-18 01:12

嗨。

在设置参数EJ时,在user_command1

中检查您的代码。/p>

当'&IC1'时。

如果rs_selfield_ekpo-fieldname ='EBELN'。

设置参数ID'BES'FIELD v_ebeln。

v_ebeln为空白,与v_mat

相同,您需要选择记录,然后赋值,也许这就是为什么它不起作用的原因。

应该是这样的:

读取表最终索引rs_selfield-tabindex。

设置参数ID" BES"字段最终标识符。


问候

米格尔(Miguel)

小c菟菟
3楼-- · 2020-08-18 01:11

Akshath,

您还需要在您的FM MATERIAL_BTCI_SELECTION_NEW中提供MTART。


赞:

*用于在MM02中查找视图号的功能模块

通话功能'MATERIAL_BTCI_SELECTION_NEW'

导出

材质= w_final-matnr

materialart = lv_mtart"材料类型(MTART)

选择='E'

tcode ='MM02'

表格

btci_d0070 = lt_btci

例外情况

material_not_found = 1

material_number_missing = 2

material_type_missing = 3

material_type_not_found = 4

no_active_dynpro_selected = 5

no_authority = 6

其他= 7。

使用键fval ='X'读取表lt_btci。

如果sy-subrc = 0。

lv_cnt = lt_btci-fnam + 17(2)。

将'MSICHTAUSW-DYTXT''(''lv_cnt')'放入l_dytxt。

将'MSICHTAUSW-KZSEL''(''lv_cnt')'放入l_dytxt1。

ENDIF。



这将为您工作。


Vivek

nice_wp
4楼-- · 2020-08-18 01:07

使用下面的代码通过调用事务MM43选择特定的视图。

*基本

设置参数ID'MAT'字段L_MATNR。

设置参数ID" MXX"字段" 0"。 "基本

呼叫交易" MM43"并跳过第一屏。

*基础+物流:配送中心

设置参数ID'MAT'字段L_MATNR。

SET PARAMETER ID'VZW'FIELD L_DC。

设置参数ID'MXX'字段'05'。 "基本+物流:配送中心

呼叫交易" MM43"并跳过第一屏。

*基本+物流:配送中心+物流:商店

设置参数ID'MAT'字段L_MATNR。

SET PARAMETER ID'VZW'FIELD L_DC。

SET PARAMETER ID'WRK'FIELD L_STORE。

设置参数ID" MXX"字段" 056"。 "基本+物流:配送中心+物流:商店

呼叫交易" MM43"并跳过第一屏。

要点是如下所示的" MXX"值。

* 0基本数据
* 1列表
* 2分类
* 3采购
* 4销售
* 5物流:配送中心
* 6物流:商店
* 7 POS
* 8分配表

因此,如果您要预选"列表+后勤:商店视图",请使用SET PARAMETER ID'MXX'FIELD'16'。

还有一点要注意,如果您使用函数" MATERIAL_MAINTAIN_DIAL_RETAIL",则P_PSTAT的值将与" MXX"的值相同。

一周热门 更多>