zsalesorder_header_data。 (数据应为日期和日期)

2020-08-20 13:05发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家, 我正在尝试为销售订单明...

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

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


专家,

我正在尝试为销售订单明细创建自定义FM。 我想要搜索日期范围为date至的客户名称,客户编号和销售订单编号。 下面是代码。 如果用户选择一个客户编号。 并输入日期和日期。 仅应为他填充数据。 为此,我必须在代码中进行哪些更改。

功能zsalesorder_header_data。

*" ----


" "本地接口:

*"正在导入

*" VALUE(I_VBELN)TYPE VBELN_VA可选

*" VALUE(I_KUNNR)TYPE KUNNR可选

*" VALUE(I_NAME)TYPE KNA1-NAME1可选

*" VALUE(DOCUMENT_DATE)类型ZSALESORDER-DOC_DATE可选

*" VALUE(DOCUMENT_DATE_TO)类型ZSALESORDER-DOC_DATE可选

*"表格

*" T_ORDERS结构ZSALESORDER

*" ----


范围:r_vbeln FOR vbak-vbeln,"销售订单

vbak-kunnr的r_kunnr,

kna1-name1的r_name,

vbak-audat的r_document_date,

vbak-audat的r_document_date_to。

数据:lv_vbeln类型vbak-vbeln,

lv_len TYPE i,

lv_index TYPE sytabix。

清除:r_vbeln,

r_vbeln []。

如果i_vbeln不初始。

r_vbeln-sign ='I'。

如果i_vbeln CS为'*'。

r_vbeln-option ='CP'。

r_vbeln-low = i_vbeln。

ELSE。

r_vbeln-option ='EQ'。

r_vbeln-low = i_vbeln。

ENDIF。

APPEND r_vbeln。

SELECT vbeln

netwr

waerk

bstnk

bstdk

ernam

erzet

kunnr

AUDAT

来自vbak

进入表t_orders

r_vbeln中的vbeln和

vbtyp ='C'。

  • 和r_document_date中的audat

  • 和r_document_date_to中的audat。

ELSEif i_kunnr不是初始的。

r_kunnr-sign ='I'。

如果i_kunnr CS为'*'。

r_kunnr-option ='CP'。

r_kunnr-low = i_kunnr。

ELSE。

r_kunnr-option ='EQ'。

r_kunnr-low = i_kunnr。

ENDIF。

APPEND r_kunnr。

SELECT vbeln

netwr

waerk

bstnk

bstdk

厄南(Ernam)

erzet

kunnr

AUDAT

来自vbak

进入表t_orders

kunnr位于r_kunnr和

vbtyp ='C'。

  • 和r_document_date中的audat

  • 和r_document_date_to中的audat。

ELSEif i_name不是缩写。

r_name-sign ='I'。

r_name-option ='CP'。

r_name-low = i_name。

APPEND r_name。

SELECT vbeln

netwr

waerk

bstnk

bstdk

vbak〜ernam

vbak〜erzet

vbak〜kunnr

vbak〜AUDAT

从vbak内部连接kna1

在vbak上的

kunnr = kna1 kunnr

进入表t_orders

其中vbtyp ='C'和

r_name中的name1。

  • 和r_document_date中的audat

  • 和r_document_date_to中的audat。

ElseIF r_document_date不是INITIAL。

r_document_date-sign ='I'。

r_document_date-option ='BT'。

如果i_vbeln CS为'*'。

r_vbeln-option ='CP'。

r_vbeln-low = i_vbeln。

ELSE。

r_vbeln-option ='EQ'。

r_vbeln-low = i_vbeln。

ENDIF。

APPEND r_vbeln。

SELECT vbeln

netwr

waerk

bstnk

bstdk

ernam

erzet

kunnr

AUDAT

来自vbak

进入表t_orders

r_vbeln中的vbeln和

vbtyp ='C'。

ENDIF。

致谢

Ranjeet Singh

2条回答
灬番茄
2020-08-20 13:11 .采纳回答

Ranjeet嗨,

1。 您已在所有选择查询中注释了AUDAT字段。

2。 在选择查询中仅使用一次AUDAT,即创建一个范围,例如R_DATE,并在低处填充DOCUMENT_DATE,在高处填充DOCUMENT_DATE_TO,并相应地签名和选择字段,或使用IN BETWEEN选项。

3。 因此,不必像在FM中为两个字段都输入一个条目那样为KUNNR和VBELN创建范围。

希望以上评论对您有帮助。

温馨的问候,

阿坎喀什。

一周热门 更多>