SELECT matnr serge external _ number stat oper _ date oper _ time matnr serge oper message FROM INTO CORRESPONDING FIELDS OF TABLE lt _ tplnr _ dtl FOR ALL ENTRIES IN lt _ acct _ org WHERE external _ number = lt _ acct _ org - account _ number AND matnr ='1014000' OR matnr ='1016000' OR matrr = '1135000' OR matrnr ='1136000' OR stat E0006' GROUP BY external _ number matnr HAVING COUNT (*)=1. 这段代码 FOR ALL ENTRIES IN和HAVING COUNT (*) 冲突。如何修改
时间: 2024-02-14 14:32:57 浏览: 24
可以将代码改为以下形式来避免冲突:
SELECT matnr, serge, external_number, stat, oper_date, oper_time, oper_message
FROM lt_tplnr_dtl
WHERE external_number IN (lt_acct_org-account_number)
AND matnr IN ('1014000', '1016000', '1135000', '1136000')
AND stat = 'E0006'
GROUP BY external_number, matnr, serge, stat, oper_date, oper_time, oper_message
HAVING COUNT(DISTINCT external_number, matnr) = 1.
这个修改后的代码与原代码具有相同的功能,但避免了 ALL ENTRIES 和 COUNT(*) 冲突的问题。
相关问题
ABAP SD 行项目ABLAD(卸货点)字段在SD_SALESDOCUMENT_CREATE中的实现代码示例
在SD_SALESDOCUMENT_CREATE中,ABAP SD行项目ABLAD字段可以通过以下方式实现:
1. 在数据声明部分添加ABLAD字段。
DATA: ls_item TYPE sdc_doc_item,
lt_item TYPE STANDARD TABLE OF sdc_doc_item.
DATA: lv_ablad TYPE ablad.
2. 在循环中,将ABLAD字段传递给行项目结构体。
LOOP AT gt_order_items INTO ls_order_item.
CLEAR ls_item.
ls_item-matnr = ls_order_item-matnr.
ls_item-quantity = ls_order_item-quantity.
ls_item-price = ls_order_item-price.
ls_item-ablad = ls_order_item-ablad. "传递ABLAD字段值
APPEND ls_item TO lt_item.
ENDLOOP.
3. 在创建销售订单的函数模块中,将行项目中的ABLAD字段值传递给相关的表和结构体变量。
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
sales_header_in = ls_header
IMPORTING
sales_header_out = ls_header_out
sales_items_out = lt_item_out
TABLES
sales_item_in = lt_item.
LOOP AT lt_item_out INTO ls_item_out.
READ TABLE lt_item ASSIGNING <fs_item> INDEX sy-tabix.
IF sy-subrc = 0.
<fs_item>-vbap_id = ls_item_out-vbap_id.
<fs_item>-ablfd = ls_item_out-ablfd.
<fs_item>-ablad = ls_item_out-ablad. "传递ABLAD字段值
ENDIF.
ENDLOOP.
这是一个简单的示例,展示了如何在SD_SALESDOCUMENT_CREATE中实现ABAP SD行项目ABLAD字段。具体实现可能因应用场景而异,但这是一个基本的框架。
BAPI_OUTB_DELIVERY_CREATE_STO的用法,给一下示例
BAPI_OUTB_DELIVERY_CREATE_STO是一个SAP函数模块,用于创建一个STO交货单。以下是一个简单的示例代码:
```
DATA: ls_header TYPE bapiobdlhdr,
lt_item TYPE TABLE OF bapiobdlitem,
ls_item TYPE bapiobdlitem,
lt_pack TYPE TABLE OF bapiobdlpack,
ls_pack TYPE bapiobdlpack,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2.
* Fill the header data
ls_header-vbeln_vl = '12345678'. "Delivery document number
ls_header-werks = '1000'. "Plant
ls_header-lfart = 'ZSTO'. "Delivery type
* Fill the item data
ls_item-posnr = '000010'. "Item number
ls_item-matnr = 'ABC123'. "Material number
ls_item-werks = '1000'. "Plant
ls_item-lfimg = 10. "Delivery quantity
APPEND ls_item TO lt_item.
* Fill the package data
ls_pack-posnr = '000010'. "Item number
ls_pack-scan_st = 'X'. "Scan status
APPEND ls_pack TO lt_pack.
* Call the function module
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO'
EXPORTING
headerdata = ls_header
TABLES
itemdata = lt_item
packdata = lt_pack
return = lt_return.
* Check the return table for any errors
LOOP AT lt_return INTO ls_return.
IF ls_return-type = 'E' OR ls_return-type = 'A'.
MESSAGE ls_return-message TYPE 'E'.
ENDIF.
ENDLOOP.
```
在上面的示例中,我们填充了交货单的头部、行项目和包装信息,并使用函数模块BAPI_OUTB_DELIVERY_CREATE_STO创建了交货单。请注意,这只是一个简单的示例,实际应用中可能需要更多的数据和逻辑处理。