我需要从bseg提取lifnr数据,并且应该在STCD3中显示为GST IN COLUMN

2020-08-26 23:04发布

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

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


我需要从bseg获取lifnr数据并链接lfa1-lifnr,并将STCD3显示为GST IN COLUMN

我有一些状况

1。 如果lifnr行为空,则表示已输入HKONT字段,并在供应商编号

中显示

我已经链接了lifnr以显示STCD3。

2。 在使用

使用键LIFNR = WA_FINAL1-HKONT将表IT_LFA1读入WA_LFA1。

sy-subrc = 4错误即将出现

将IT_BSEG放入WA_BSEG中。

WA_FINAL1-BELNR = WA_BSEG-BELNR。
WA_FINAL1-GJAHR = WA_BSEG-GJAHR。
WA_FINAL1-MWSKZ = WA_BSEG-MWSKZ。
WA_FINAL1- WRBTR = WA_BSEG-WRBTR。

如果WA_BSEG-TCODE NE'MIRO'。

WA_FINAL1-LIFNR = WA_BSEG-LIFNR。

如果WA_BSEG-LIFNR =''。< br> WA_FINAL1-LIFNR = WA_BSEG-HKONT。 " WA_BSEG-HKONT。
ELSEIF
WA_FINAL1-LIFNR = WA_BSEG-LIFNR。
ENDIF。

ELSEIF WA_BSEG-TCODE NE'FV60'。

WA_FINAL1-LIFNR = WA_BSEG-LIFNR。如果WA_BSEG-LIFNR =''。

WA_FINAL1-LIFNR = WA_BSEG-HKONT。
ELSEIF
WA_FINAL1-LIFNR = WA_BSEG-LIFNR。
ENDIF。

ENDIF。

WA_FINAL1-MATNR = WA_BSEG-MATNR。
WA_FINAL1-WERKS = WA_BSEG-WERKS。
WA_FINAL1-MENGE = WA_BSEG-MENGE。< br> WA_FINAL1-MEINS = WA_BSEG-MEINS。
WA_FINAL1-EBELN = WA_BSEG-EBELN。
WA_FINAL1-EBELP = WA_BSEG-EBELP。
WA_FINAL1-HSN_SAC = WA_BSEG-HSN_SAC。
WA_FINAL1-BUKRS = WA_BSEG-BUKRS。

如果WA_BSEG-BSCHL EQ为'89'。
WA_FINAL1-SEG_HKONT = WA_BSEG-HKONT。
ENDIF。

读取表IT_BKPF并通过键BELNR = WA_BKPF WA_BSEG-BELNR
GJAHR = WA_BSEG-GJAHR二进制搜索。
如果WA_FINAL1-MWSKZ ='R *'。
WA_FINAL1-TAX_DEC ='RCM'。
ELSEIF WA_FINAL1-MWSKZ NE'R *' 。
WA_FINAL1-TAX_DEC ='TAXABLE – GST'。
ENDIF。

如果SY-SUBRC =0。
WA_FINAL1-BELNR = WA_BKPF-BELNR。
WA_FINAL1-GJAHR = WA_BKPF-GJAHR。
WA_FINAL1-BLDAT = WA_BKPF-BLDAT。
WA_FINAL1-BUDAT = WA_BKPF-BUDAT。
WA_FINALK-TCODE = WAB
WA_FINAL1-XBLNR = WA_BKPF-XBLNR。
WA_FINAL1-WAERS = WA_BKPF-WAERS。
WA_FINAL1-KURSF = WA_BKPF-KURSF。
WA_FINAL1-AWKEY = WA_BKPF-AWKEY。
< br>呼叫功能'ISP_GET_MONTH_NAME'
导出
日期= WA_FINAL1-BLDAT
语言= SY-LANGU
* MONTH_NUMBER ='00'
IMPORTING
* LANGU_BACK =
LONGTEXT = WA_FINAL1-MONTHS
*短文本=
例外情况
CALENDAR_ID = 1
DATE_ERROR = 2
NOT_FOUND = 3
WRONG_INPUT = 4
其他=5。
IF SY -SUBRC <> 0.
*在此处实施适当的错误处理
ENDIF。

ENDIF。

IF WA_FINAL1-TCODE EQ'MIRO'。
通话功能'TEXT_SPLIT '
导出
长度= 10
文本= WA_FINAL1-AWKEY
" AS_CHARACTER =
导入
线= WA_FINAL1-DOCNO
REST = WA_FINAL1-DOCYR。
否则 。
WA_FINAL1-DOCNO = W A_FINAL1-BELNR。
ENDIF。


用键EBELN = WA_BSEG-EBELN将表IT_EKKO读入WA_EKKO。 "二进制搜索。

如果WA_FINAL1-TCODE EQ'MIRO'。

如果SY-SUBRC =0。

WA_FINAL1-BSART = WA_EKKO-BSART。
< br> IF WA_EKKO-BSART EQ'ZVR'。
WA_FINAL1-PUR_RET ='返回'。
ELSE。" WA_EKKO-BSART NE'ZVR'。
WA_FINAL1-PUR_RET ='购买'。
ENDIF。
ENDIF。

ENDIF。

读取表IT_MAKT到WA_MAKT中,键MATNR = WA_FINAL1-MATNR。
如果SY-SUBRC = 0。
WA_FINAL1-MAKTX = WA_MAKT-MAKTX。
ENDIF。
用键MATNR = WA_BSEG-MATNR将表IT_MARC读入WA_MARC
WERKS = WA_BSEG-WERKS二进制搜索。 > IF SY-SUBRC =0。
WA_FINAL1-STEUC = WA_MARC-STEUC。
ENDIF。

将表IT_LFA1读入WA_LFA1中,键为LIFNR = WA_FINAL1-LIFNR。

IF SY-SUBRC = 0。

WA_FINAL1-NAME1 = WA_LFA1-NAME1。
WA_FINAL1-REGIO = WA_LFA1-REGIO。
WA_FINAL1-STCD3 = WA_LFA1-STCD3。

ENDIF。

使用键LIFNR = WA_FINAL1-HKONT将表IT_LFA1读入WA_LFA1。

如果SY-SUBRC =0。

WA_FIN AL1-NAME1 = WA_LFA1-NAME1。
WA_FINAL1-REGIO = WA_LFA1-REGIO。
WA_FINAL1-STCD3 = WA_LFA1-STCD3。

ENDIF。



读表IT_SKAT 使用键SAKNR = WA_BSEG-HKONT进入WA_SKAT。



如果WA_FINAL1-NAME1 =''。
WA_FINAL1-SAKNR = WA_SKAT-SAKNR。
WA_FINAL1-NAME1 = WA_SKAT- TXT20。
ENDIF。
如果SY-SUBRC =0。" WA_LFA1-NAME1 ="。
WA_FINAL1-SAKNR = WA_SKAT-SAKNR。
WA_FINAL1-TXT20 = WA_SKAT-TXT20。
ENDIF。

使用键MWSKZ = WA_FINAL1-MWSKZ将表IT_T007S读入WA_T007S。 "二进制搜索。

如果SY-SUBRC =0。
WA_FINAL1-TEXT1 = WA_T007S-TEXT1。
ENDIF。

读取表IT_T001W并通过按键操作读入WA_T001W = WA_BSEG- WERKS二进制搜索。

如果SY-SUBRC =0。
WA_FINAL1-T00_REGIO = WA_T001W-REGIO。
ENDIF。
在IT_BSET处插入WA_BSET,其中BUKRS = WA_BSEG-BUKRS AND
BELNR = WA_BSEG-BELNR AND
GJAHR = WA_BSEG-GJAHR。
如果WA_BSET-KSCHL ='JIIG'。
WA_FINAL1-VAL_IGST = WA_BSET-FWSTE。
WA_FINAL1-PER_IGST = WA_BSET-KBETR/10。
ENDIF。
如果WA_BSET-KSCHL ='JICG'。
WA_FINAL1-VAL_CGST = WA_BSET-FWSTE。
WA_FINAL1-PER_CGST = WA_BSET-KBETR/10。
ENDIF。
> IF WA_BSET-KSCHL ='JISG'。
WA_FINAL1-VAL_SGST = WA_BSET-FWSTE。
WA_FINAL1-PER_SGST = WA_BSET-KBETR/10。
ENDIF。

IF WA_FINAL1-VAL_IGST NE 0。
WA_FINAL1-GST_RET ='IGST'。
ENDIF。
如果WA_FINAL1-VAL_IGST = 0.
WA_FINAL1-GST_RET ='GST'。
ENDIF。

*如果WA_FINAL1-VAL_IGST NE'0'。
* WA_FINAL1-GST_RET ='IGST'。
* ENDIF。
*如果WA_FINAL1-VAL_CGST NE为'0'。
* WA_FINAL1-GST_RET ='GST'。
* ENDIF。

ENDLOOP。

> WA_FINAL1-VAL_TOTAL = WA_FINAL1-VAL_IGST + WA_FINAL1-VAL_CGST + WA_FINAL1-VAL_SGST。
WA_FINAL1-TOT_GST = WA_FINAL1-PER_IGST + WA_FINAL1-PER_CGST + WA_FINAL1-PER_SGST。
SHIFT WA_FINAL1-MATNR左删除领先'0'。

将WA_FINAL1追加到IT_FINAL1。
清除WA_FINAL1。

ENDLOOP。

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

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


我需要从bseg获取lifnr数据并链接lfa1-lifnr,并将STCD3显示为GST IN COLUMN

我有一些状况

1。 如果lifnr行为空,则表示已输入HKONT字段,并在供应商编号

中显示

我已经链接了lifnr以显示STCD3。

2。 在使用

使用键LIFNR = WA_FINAL1-HKONT将表IT_LFA1读入WA_LFA1。

sy-subrc = 4错误即将出现

将IT_BSEG放入WA_BSEG中。

WA_FINAL1-BELNR = WA_BSEG-BELNR。
WA_FINAL1-GJAHR = WA_BSEG-GJAHR。
WA_FINAL1-MWSKZ = WA_BSEG-MWSKZ。
WA_FINAL1- WRBTR = WA_BSEG-WRBTR。

如果WA_BSEG-TCODE NE'MIRO'。

WA_FINAL1-LIFNR = WA_BSEG-LIFNR。

如果WA_BSEG-LIFNR =''。< br> WA_FINAL1-LIFNR = WA_BSEG-HKONT。 " WA_BSEG-HKONT。
ELSEIF
WA_FINAL1-LIFNR = WA_BSEG-LIFNR。
ENDIF。

ELSEIF WA_BSEG-TCODE NE'FV60'。

WA_FINAL1-LIFNR = WA_BSEG-LIFNR。如果WA_BSEG-LIFNR =''。

WA_FINAL1-LIFNR = WA_BSEG-HKONT。
ELSEIF
WA_FINAL1-LIFNR = WA_BSEG-LIFNR。
ENDIF。

ENDIF。

WA_FINAL1-MATNR = WA_BSEG-MATNR。
WA_FINAL1-WERKS = WA_BSEG-WERKS。
WA_FINAL1-MENGE = WA_BSEG-MENGE。< br> WA_FINAL1-MEINS = WA_BSEG-MEINS。
WA_FINAL1-EBELN = WA_BSEG-EBELN。
WA_FINAL1-EBELP = WA_BSEG-EBELP。
WA_FINAL1-HSN_SAC = WA_BSEG-HSN_SAC。
WA_FINAL1-BUKRS = WA_BSEG-BUKRS。

如果WA_BSEG-BSCHL EQ为'89'。
WA_FINAL1-SEG_HKONT = WA_BSEG-HKONT。
ENDIF。

读取表IT_BKPF并通过键BELNR = WA_BKPF WA_BSEG-BELNR
GJAHR = WA_BSEG-GJAHR二进制搜索。
如果WA_FINAL1-MWSKZ ='R *'。
WA_FINAL1-TAX_DEC ='RCM'。
ELSEIF WA_FINAL1-MWSKZ NE'R *' 。
WA_FINAL1-TAX_DEC ='TAXABLE – GST'。
ENDIF。

如果SY-SUBRC =0。
WA_FINAL1-BELNR = WA_BKPF-BELNR。
WA_FINAL1-GJAHR = WA_BKPF-GJAHR。
WA_FINAL1-BLDAT = WA_BKPF-BLDAT。
WA_FINAL1-BUDAT = WA_BKPF-BUDAT。
WA_FINALK-TCODE = WAB
WA_FINAL1-XBLNR = WA_BKPF-XBLNR。
WA_FINAL1-WAERS = WA_BKPF-WAERS。
WA_FINAL1-KURSF = WA_BKPF-KURSF。
WA_FINAL1-AWKEY = WA_BKPF-AWKEY。
< br>呼叫功能'ISP_GET_MONTH_NAME'
导出
日期= WA_FINAL1-BLDAT
语言= SY-LANGU
* MONTH_NUMBER ='00'
IMPORTING
* LANGU_BACK =
LONGTEXT = WA_FINAL1-MONTHS
*短文本=
例外情况
CALENDAR_ID = 1
DATE_ERROR = 2
NOT_FOUND = 3
WRONG_INPUT = 4
其他=5。
IF SY -SUBRC <> 0.
*在此处实施适当的错误处理
ENDIF。

ENDIF。

IF WA_FINAL1-TCODE EQ'MIRO'。
通话功能'TEXT_SPLIT '
导出
长度= 10
文本= WA_FINAL1-AWKEY
" AS_CHARACTER =
导入
线= WA_FINAL1-DOCNO
REST = WA_FINAL1-DOCYR。
否则 。
WA_FINAL1-DOCNO = W A_FINAL1-BELNR。
ENDIF。


用键EBELN = WA_BSEG-EBELN将表IT_EKKO读入WA_EKKO。 "二进制搜索。

如果WA_FINAL1-TCODE EQ'MIRO'。

如果SY-SUBRC =0。

WA_FINAL1-BSART = WA_EKKO-BSART。
< br> IF WA_EKKO-BSART EQ'ZVR'。
WA_FINAL1-PUR_RET ='返回'。
ELSE。" WA_EKKO-BSART NE'ZVR'。
WA_FINAL1-PUR_RET ='购买'。
ENDIF。
ENDIF。

ENDIF。

读取表IT_MAKT到WA_MAKT中,键MATNR = WA_FINAL1-MATNR。
如果SY-SUBRC = 0。
WA_FINAL1-MAKTX = WA_MAKT-MAKTX。
ENDIF。
用键MATNR = WA_BSEG-MATNR将表IT_MARC读入WA_MARC
WERKS = WA_BSEG-WERKS二进制搜索。 > IF SY-SUBRC =0。
WA_FINAL1-STEUC = WA_MARC-STEUC。
ENDIF。

将表IT_LFA1读入WA_LFA1中,键为LIFNR = WA_FINAL1-LIFNR。

IF SY-SUBRC = 0。

WA_FINAL1-NAME1 = WA_LFA1-NAME1。
WA_FINAL1-REGIO = WA_LFA1-REGIO。
WA_FINAL1-STCD3 = WA_LFA1-STCD3。

ENDIF。

使用键LIFNR = WA_FINAL1-HKONT将表IT_LFA1读入WA_LFA1。

如果SY-SUBRC =0。

WA_FIN AL1-NAME1 = WA_LFA1-NAME1。
WA_FINAL1-REGIO = WA_LFA1-REGIO。
WA_FINAL1-STCD3 = WA_LFA1-STCD3。

ENDIF。



读表IT_SKAT 使用键SAKNR = WA_BSEG-HKONT进入WA_SKAT。



如果WA_FINAL1-NAME1 =''。
WA_FINAL1-SAKNR = WA_SKAT-SAKNR。
WA_FINAL1-NAME1 = WA_SKAT- TXT20。
ENDIF。
如果SY-SUBRC =0。" WA_LFA1-NAME1 ="。
WA_FINAL1-SAKNR = WA_SKAT-SAKNR。
WA_FINAL1-TXT20 = WA_SKAT-TXT20。
ENDIF。

使用键MWSKZ = WA_FINAL1-MWSKZ将表IT_T007S读入WA_T007S。 "二进制搜索。

如果SY-SUBRC =0。
WA_FINAL1-TEXT1 = WA_T007S-TEXT1。
ENDIF。

读取表IT_T001W并通过按键操作读入WA_T001W = WA_BSEG- WERKS二进制搜索。

如果SY-SUBRC =0。
WA_FINAL1-T00_REGIO = WA_T001W-REGIO。
ENDIF。
在IT_BSET处插入WA_BSET,其中BUKRS = WA_BSEG-BUKRS AND
BELNR = WA_BSEG-BELNR AND
GJAHR = WA_BSEG-GJAHR。
如果WA_BSET-KSCHL ='JIIG'。
WA_FINAL1-VAL_IGST = WA_BSET-FWSTE。
WA_FINAL1-PER_IGST = WA_BSET-KBETR/10。
ENDIF。
如果WA_BSET-KSCHL ='JICG'。
WA_FINAL1-VAL_CGST = WA_BSET-FWSTE。
WA_FINAL1-PER_CGST = WA_BSET-KBETR/10。
ENDIF。
> IF WA_BSET-KSCHL ='JISG'。
WA_FINAL1-VAL_SGST = WA_BSET-FWSTE。
WA_FINAL1-PER_SGST = WA_BSET-KBETR/10。
ENDIF。

IF WA_FINAL1-VAL_IGST NE 0。
WA_FINAL1-GST_RET ='IGST'。
ENDIF。
如果WA_FINAL1-VAL_IGST = 0.
WA_FINAL1-GST_RET ='GST'。
ENDIF。

*如果WA_FINAL1-VAL_IGST NE'0'。
* WA_FINAL1-GST_RET ='IGST'。
* ENDIF。
*如果WA_FINAL1-VAL_CGST NE为'0'。
* WA_FINAL1-GST_RET ='GST'。
* ENDIF。

ENDLOOP。

> WA_FINAL1-VAL_TOTAL = WA_FINAL1-VAL_IGST + WA_FINAL1-VAL_CGST + WA_FINAL1-VAL_SGST。
WA_FINAL1-TOT_GST = WA_FINAL1-PER_IGST + WA_FINAL1-PER_CGST + WA_FINAL1-PER_SGST。
SHIFT WA_FINAL1-MATNR左删除领先'0'。

将WA_FINAL1追加到IT_FINAL1。
清除WA_FINAL1。

ENDLOOP。

付费偷看设置
发送
2条回答
SKY徐
1楼-- · 2020-08-26 23:20

prabhu duraikannu 希望您对以下字段的声明具有相同的数据类型,因为它们都具有 维护的转换例程会尝试使用相关类型进行声明。 如果您尚未维护各自的数据类型,则可能是原因

 WA_BSEG-HKONT TYPE HKONT
 WA_BSEG-LIFNR型LIFNR
 WA_FINAL1-LIFNR类型LIFNR
 WA_FINAL1-HKONT类型HKONT
 
jovirus
2楼-- · 2020-08-26 23:18

您好,
请只共享相关的代码片段,并使用copy-> paste作为text-> button" code"将其格式化:这将使每个人都更容易阅读

老实说,我看不到任务的问题:

  • 仅使用LIFNR和STCD3将lfa1读入哈希表
  • 读入表BSEG
  • 循环BSEG
  • 如果BSEG-LIFNR不是初始的,则用它来读取内部表LFA1
  • ELSE使用HKONT

这可以通过使用新的ABAP语法更理想的方式来实现,但是逻辑是相同的。
我假设您正在从BSEG中过滤所有相关的案例,因此您始终将LIFNR或HKONT与 LIFNR值

一周热门 更多>